#include<iostream> #define type int void quick_sort(type* arry,int begin,int end); void main(){ type arry[]={8,2,3,4,2,4,8,9,0,1}; quick_sort(arry,0,9); int i = 9; while(i >= 0){ std::cout<<arry[9-i]<<std::endl; i--; } } void quick_sort(type* arry,int begin,int end){ int i,//记录比较值的开始位置 j,//记录比较值的结束位置 curposition;//记录中间值当前位置 bool direction = false;//定义向右为正即i<curposition<j为正 type temp = *(arry+begin);//记录中间值的值 i = begin+1; curposition = begin; j = end; while (i<=j) { if(direction){//为正时curposition与i比较 if(*(arry+i)<temp){ *(arry+curposition) = *(arry+i); curposition = i; direction = false; } i++; } else{//为负时curposition与j比较 if(*(arry+j)>temp){ *(arry+curposition) = *(arry+j); curposition = j; direction = true; } j--; } } *(arry+curposition) = temp;//放回到适当位置此轮排序结束 if (curposition - begin > 1)//进行下一轮较小值的排序 { quick_sort(arry,begin,curposition - 1); } if (end - curposition > 1)//进行下一轮较大值的排序 { quick_sort(arry,curposition + 1,end); } }
快速排序
最新推荐文章于 2021-11-19 16:57:43 发布