/*
* 快速排序
* https://blog.csdn.net/hguisu/article/details/7776068
*/
#include <iostream>
using namespace std;
int partition(int a[], int low, int high);
void quickSort(int a[], int low, int high);
int main()
{
int a[4] = {1, 2, 5, 0};
quickSort(a,0,3);
for(int i=0; i < 4; i++)
cout<<a[i]<<" ";
return 0;
}
int partition(int a[], int low, int high){
//每次只可以处理两个元素
int Basic_element = a[low]; //基准元素
while(low<high){
while(low < high && a[high] >= Basic_element) //从后往前扫,碰到比基准元素小的就扔到前面去。
high--;
swap(a[low],a[high]);
while(low < high && a[low] <= Basic_element) //同理
low++;
swap(a[low], a[high]);
}
return low; //low == high
}
void quickSort(int a[], int low, int high){
if(low<high){
int mid = partition(a,low,high); //分两半
quickSort(a,low,mid-1);
quickSort(a,mid+1,high);
}
}
快排模板
最新推荐文章于 2023-03-19 15:20:26 发布