不解释了,基础算法,递归分治思想
#include <iostream>
#include <algorithm>
using namespace std;
int num[]={6,8,4,1,2,5,23,15};//测试数组
int len;//数组长度
void show(){//打印数组
for(int i=0;i<len;i++){
cout<<num[i]<<' ';
}
cout<<endl;
}
int partition(int a[],int low,int high){//快排划分
int key=a[low];
while(low<high){
while(low<high&&a[high]>key) high--;
swap(a[low],a[high]);
while(low<high&&a[low]<key) low++;
swap(a[low],a[high]);
}
}
void qs(int a[],int low,int high){//快排
if(low>=high) return;
int index=partition(a,low,high);
qs(a,low,index-1);
qs(a,index+1,high);
}
int main(){
len=sizeof(num)/sizeof(int);
show();
qs(num,0,len-1);
show();
}