希尔排序 void SHELLSORT(keytype K[],int n) { int i,j,flag,gap=n; keytype temp; while(gap>1){ gap=gap/2; do{ flag=0; // 是否执行交换,初始化不执行交换 for(i=1;i<=n-gap;i++){ // 每次循环n-gap趟 j=i+gap; // 增量为gap的元素两两作交换 if(K[i]>K[j]){ temp=K[i] K[i]=K[j] K[j]=temp flag=1 } } } while(flag!=0); // 当不交换了,退出循环 } }