(排序)用C语言实现的希尔排序(插入排序)
2013-03-26 21:36
393 查看
/* *希尔排序,又叫缩小增量的排序,把元素按照下标一定的增量d进行分组,对每个 *分组记录采用直接插入排序的方法进行排序,随着增量的减小,所分成的组的记录越来越多 *到增量的值减小到1时,整个数据合成一组,构成一组有序记录,排序完成。 */ #include<stdio.h> void ShellSort(int *a,int len); int main(void) { int a[10]={1222,153,1515,658719,27,5416,56,9,6,33}; ShellSort(a,10); return 0; } void ShellSort(int *a,int len) { int gap; gap=len/2; int i; int temp; int j; while(gap>0) {//这里是直接插入排序,无序区是从gap开始,并且要对每一个相隔gap的元素排序,故要i++ for(i=gap;i<len;i++) {//用j记录有序区的最后一个元素的下标 j=i-gap; //用temp记录无序区的第一个元素,这也是比较的基准元素 temp=a[i]; //用基准元素temp,从后向前与有序区的元素进行比较 while(j>=0&&temp<a[j]) {//注意这里是后移gap个元素的位置,对相隔gap的元素进行排序 a[j+gap]=a[j]; //下标向前移动 j=j-gap; } a[j+gap]=temp; } gap=gap/2; } for(int k=0;k<len;k++) { printf("%d\n",a[k]); } }
相关文章推荐
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- C#实现所有经典排序算法(选择排序,冒泡排序,快速排序,插入排序,希尔排序)
- C语言实现直接插入排序和希尔排序
- C语言8种排序算法及其实现 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序
- 【程序员笔试面试必会——排序①】Python实现 冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序、希尔排序
- java实现排序算法之插入排序(直接插入排序,折半插入排序,希尔排序)
- 排序【3】之希尔排序的C语言实现
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- 插入排序,希尔排序,堆排序,归并排序,快速排序Java实现
- 排序之二:希尔排序(C语言实现)
- 各种排序算法实现——基数排序、归并排序、插入排序、冒泡排序、选择排序、快速排序、堆排序、希尔排序
- 数据结构--排序系列(插入排序,希尔排序,堆排序)Java代码实现
- 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)
- 几种基本的排序算法(选择排序,冒泡排序,快速排序,归并排序,希尔排序)C语言实现
- 算法系列(二)冒泡排序、选择排序、插入排序和希尔排序(Java实现)
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- C语言实现插入排序与希尔排序与一些想法
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- 算法和数据结构-选择排序、插入排序及希尔排序 java实现
- C语言常用的排序方法:冒泡排序,插入排序,快速排序,堆排序,希尔排序