- int HandShake( int* array, int start, int end ){
- int tmp=array[start];//将首个元素作为中间值,并寄存起来
- do{
- while( array[end]>=tmp && start<end ) end--;
- if( start<end )
- {array[start]=array[end];//发现一个小的,丢到前面去
- start++;}//不加也可以,不过既然丢过来的,那一定符合要求
- while( array[start]<=tmp && start<end ) start++;
- if( start<end )
- {array[end]=array[start];//大的就丢到后面去,这么丢来丢去就造成了不稳定
- end--;}
- }while(start<end);
- array[start]=tmp;//最后结束时一定是start==end
- return start;
- }
- void Quicksort( int* array, int start, int end ){
- if(start<end){//这相当于设立了递归终止条件
- int mid=HandShake(array,start,end);
- Quicksort(array,start,mid-1);//用到了递归,很漂亮
- Quicksort(array,mid+1,end);
- }
- }
快速排序
最新推荐文章于 2024-07-17 10:35:12 发布