折半排序
1 void half_insert_sort(int a[],int n) 2 { 3 for(int i=1;i<n;i++) 4 { 5 int low=0; 6 int high=i-1;//not n-1 7 int mid; 8 int t=a[i]; 9 while(low<high) 10 { 11 mid=(high-low)/2; 12 if(a[mid]>t) 13 { 14 high=mid--; 15 } 16 else 17 { 18 low=mid++; 19 } 20 } 21 for(int j=i;j>mid;j--) 22 { 23 a[j]=a[j-1]; 24 a[low]=t; 25 } 26 } 27 }
希尔排序
void shell_sort(int a[],int n) { int d,temp; for(int d=n/2;d>=1;i/=2) { for(int i=d;i<n;i++) { temp=a[i]; for(int j=i-d;a[j]>temp&&j>=0;j-=d) { a[j+d]=a[j]; } a[j+d]=temp; } } }
选择排序
时间: 2024-12-28 08:20:25