快速排序
基本思想:
1. 先取出一个数作为基准数。
2. 分区过程,将比这个数大的全放到它的右边,小于或等于它的全放左边。
3. 再对左右重复第二步,直到到各个区间只有一个数。
#include<iostream>
using namespace std;
template<class T>
void quick_sort(T s[],int start, int end){
int oldStart = start, oldEnd = end;
int temp = start;
T mid = s[start++];
while(start<=end){
if(temp < start){
if(s[end] > mid){
end --;
continue;
}
s[temp] = s[end];
temp = end--;
}else{
if(s[start] <= mid){
start++;
continue;
}
s[temp] = s[start];
temp = start++;
}
s[temp] = mid;
// 如果没有调整,说明已经有序,不用再分了
if(temp == oldStart){
return;
}
quick_sort(s, oldStart, temp-1);
quick_sort(s, temp+1, oldEnd);
}
}
void printArr(int a[],int size){
for(int i =0 ;i< size;i++)
cout<<a[i]<<" ";
cout<<endl;
}
int main(){
int a[]={2,3,5,1,2,7,9,12,5,3,0};
quick_sort(a,0,sizeof(a)/sizeof(int)-1);
printArr(a,sizeof(a)/sizeof(int));
}
来源:CSDN
作者:wyc-
链接:https://blog.csdn.net/qq_28120673/article/details/104553287