首页 > 代码库 > 排序算法
排序算法
排序
1. 直接插入排序
原理:将当前无序区a[i...n-1]的记录一个一个插入到有序区a[0....i-1]合适位置;
1 void insert_sort(int a[], int n) 2 { 3 int j; 4 for(int i=1;i<n;i++) 5 { 6 int temp=a[i]; 7 8 for(j=i-1;j>=0&&temp<a[j];j--) 9 {10 a[j+1]=a[j];11 }12 a[j+1]=temp;13 }14 }
2. shell 排序
原理:实质为分组插入排序,首先按增量为d分成若干组,下标相差d的元素放在一组使用直接插入排序;然后用一个较小的增量继续分组和排序,直至增量减到1,整个分组即为一组,排序完成。
1 void shell_sort(int *a, int n) 2 { 3 for(int h=n/2;h>0;h=h/2) 4 { 5 for(int i=h;i<n;i++) //for 循环就是增量为h的直接插入排序 6 { 7 int temp=a[i]; 8 int j; 9 for(j=i-h;j>=0&&temp<a[j];j=j-h)10 {11 a[j+h]=a[j];12 }13 a[j+h]=temp;14 }15 }16 }
3. 冒泡排序
原理:首先将a[0...n-1] 垂直排列,根据气泡原理,较轻的会浮在较重的上面。 自底向上扫描:凡扫描到违反此原则的轻气泡,就使其上浮。
每遍扫描都会是最轻的一个元素上浮。扫描n-1 趟
1 void bubble_sort(int a[],int n) 2 { 3 for(int i=0;i<n-1;i++) 4 { 5 for(int j=n-1;j>i;j--) 6 { 7 if(a[j]<a[j-1]) 8 { 9 int temp=a[j];10 a[j]=a[j-1];11 a[j-1]=temp;12 }13 }14 }15 }
排序算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。