希尔排序
1 /* 希尔排序 */ 2 3 #include<stdio.h> 4 #include<stdlib.h> 5 6 void show(int *p,int length) 7 { 8 printf("\n"); 9 for (int i=0;i<length;i++) 10 { 11 printf("%4d",p[i]); 12 } 13 } 14 15 void shellsort(int *p,int length) 16 { 17 int d = length/2;// 增量 18 while (d>=1)// 增量终止的条件 19 { 20 for (int i=d;d<length && i<length;i++)// i循环最后的位置 21 { 22 int x=p[i];// 备份 23 int j=i-d;// 前面一个元素 24 while (j>=0 && p[j]>x)// 保证在数组的范围内 找到插入的位置 25 { 26 p[j+d]=p[j]; 27 j=j-d;// 每次折半 28 } 29 30 p[j+d]=x;// 交换 31 } 32 33 d/=2;// d-- 也可以,增量可以自由设定 34 } 35 36 } 37 38 void main() 39 { 40 int a[8] = {1,8,2,7,3,4,5}; 41 42 43 show(a,8); 44 45 shellsort(a,8); 46 47 show(a,8); 48 49 50 51 system("pause"); 52 }
长风破浪会有时,直挂云帆济沧海
posted on 2015-06-24 14:40 Dragon-wuxl 阅读(196) 评论(0) 收藏 举报
浙公网安备 33010602011771号