希尔排序用了用了更少的时间编出来:
#include <iostream> void Shellsort(int A[],int p,int r) { int d=r-p+1; //将 length(A) 赋给d int i,j,tmp; while(d>=1) { d/=2; for(i=p+d;i<=r;i++) { tmp=A[i]; j=i-d; //从i的前一个步长开始 while(j>=p && tmp<A[j]) { A[j+d]=A[j]; //记录后移 j-=d; //向前计数 } A[j+d]=tmp; } } } int main() { int A[6]={0,5,3,2,1,4}; Shellsort(A,1,5); for(int i=1;i<=5;i++) printf("%d ",A[i]); return 0; }
运行结果为:
1 2 3 4 5