//希尔排序 void fzSort(int *arr,int count) { printf("/n"); printArr(arr,count); int increase=count/2;//初始化增量 int temp ; for(; increase>0; increase=increase/2) { for(int i=increase;i<count;i++) { if(arr[i]>arr[i-increase]) { temp = arr[i]; arr[i] = arr[i-increase]; arr[i-increase]=temp; //printf("/n"); //printArr(arr,count); } } printf("/n---"); printArr(arr,count); } } 二 快速排序算法 //快速排序算法 void quickSort(int *arr,int nStart,int nEnd) { if(nStart>=nEnd||arr==NULL||nStart<0||nEnd<0) return; //初始化 int baseVal = arr[nStart]; int i=nStart,j=nEnd;// while(i<=j) { while(arr[j]>baseVal && j>=nStart) j--; while(arr[i]<baseVa &&l i<=nEnd) i++; if(i<j && i<=nEnd && j>=nStart)//将指针位置的数对调 { int temp = arr[i]; arr[i]=arr[j]; arr[j]=temp; i++;j--; // printf("/n"); // printArr(arr,10); } else if(i==j)//如果指向同一个位置,退出循环并将位置加一 { i++; break; } else break; } // printf("=====%d,i=%d/n",baseVal,i); if(nEnd-nStart<1) return;//结束递归 quickSort(arr,nStart,i-1);//递归处理左边部分 quickSort(arr,i,nEnd); //递归处理右边部分 }