编程实现直接插入排序、希尔排序、冒泡排序、快速排序、选择排序
2017-07-24 17:14
501 查看
代码
#include <iostream> using namespace std; //直接插入排序 void insert_sort(int a[],int n) { int i , j , temp; for(i = 1;i<n;i++) { temp = a[i]; for(j=i-1;j>=0&&temp<a[j]; j--) { a[j+1] = a[i]; } a[j+1] = temp; } }
//希尔排序 //希尔排序实质上是一种分组插入排序 void shell_sort(int a[],int n) { int h,i,j,temp; for(h = n/2;h>0;h=h/2) { for(i = h;i<n;i++) { temp = a[i]; for(j = i-h;(j>=0&&temp<a[j]);j-=h) { a[j+h] =a[j]; } a[j+h] = temp; } } }
//冒泡排序(原始) void bubble_sort(int a[],int len) { int i ,j,temp; for(i = 0;i<len-1;i++) { for(j = len -1;j>=i;j--) { if(a[j+1]<a[j]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } }
//改进版的冒泡排序 void bubble_sort2(int a[],int len) { int i ,j,temp; int exchange = 0; for(i = 0;i<len-1;i++) { exchange = 0; for(j = len-1;j>=i;j--) { if(a[j+1]<a[j]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; exchange = 1; } } if(exchange!=1) return; } }
//快速排序 void quick_sort(int a[],int len) { int i ,j,pivot; if(low<high) { pivot = a[low]; i = low; j = high; while(i<j) { while(i<j&&a[j]>=pivot) j--; if(i<j) a[i++] = a[j]; while(i<j&&a[i]<=pivot) i++; if(i<j) a[j--] = a[i]; } a[i] = pivot; //pivot移动到最终位置 quick_sort(a,low,i-1); quick_sort(a,i+1,high); } }
//选择排序(不稳定) void select_sort(int a[],int len) { int i,j,x,l; for(i = 0;i<len;i++) { x=a[i]; l = i; for(j = j ;j<len;j++) { if(a[j]<x) { x = a[j]; l = j; } } a[l] = a[i]; a[i] = x; } }
相关文章推荐
- 十二.C语言8种排序算法及其实现 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序
- C语言8种排序算法及其实现 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序
- oc中的排序 快速排序,冒泡排序,直接插入排序和折半插入排序,希尔排序,堆排序,直接选择排序
- java版排序算法简介及冒泡排序以及优化,选择排序,直接插入排序,希尔排序,堆排序,快速排序及其优化前言 2 分类 2 稳定性 3 时间复杂度 4 Java实现版本 5 1、冒泡排序 6 2、选择排序
- C++实现常用排序算法(快速排序、冒泡排序、希尔排序、折半插入排序、直接插入排序)
- 常见排序集合(冒泡排序,选择排序,直接插入排序,二分插入排序,快速排序,希尔排序,归并排序)
- 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)
- 排序算法汇总(选择排序 ,直接插入排序,冒泡排序,希尔排序,快速排序,堆排序)
- 排序算法: 冒泡排序, 快速排序,希尔排序,直接插入排序 ,直接选择排序,归并排序,堆排序
- 排序算法汇总(选择排序 ,直接插入排序,冒泡排序,希尔排序,快速排序...)
- 插入排序、冒泡排序、选择排序、希尔排序、快速排序、归并排序、堆排序和LST基数排序的C++代码实现
- java实现各种基础排序(冒泡排序、快速排序、直接选择排序、堆排序、直接插入排序、归并排序)
- 比较排序总结——直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序
- python排序算法-冒泡排序,选择排序,直接插入排序,希尔排序,归并排序,快速排序,堆排序
- 插入排序、冒泡排序、选择排序、希尔排序、快速排序、归并排序、堆排序和LST基数排序——JAVA实现
- 冒泡排序 快速排序 选择排序 堆排序 直接插入排序 希尔排序 归并排序
- IOS- 快速排序,冒泡排序,直接插入排序和折半插入排序,希尔排序,堆排序,直接选择排序
- 菜鸟学编程之三:三种最基本排序算法的实现(冒泡排序、选择排序、直接插入排序)
- 冒泡排序-直接选择排序-直接插入排序-希尔排序-java实现
- 快速排序,选择排序,直接插入,冒泡排序的javascript实现