快速排序
快速排序的原理
先选择一个中轴,其他数与中轴比较,大的放在中轴的右边,小的放在中轴的左边。
下列示意图选择第一个为中轴。
具体代码实现
#include<iostream>
using namespace std;
//此函数实现过程由上图可知
int partition(int arr[];int low;int high)
{
int pivot=arr[low];//pivot意为中轴
while(low<high){
while(arr[high]>=pivot&&low<high)high--;
arr[low]=arr[high];
while(arr[low]<=pivot&&low<high)low++;
arr[high]=arr[low];
}
arr[low]=pivot;
return low;
}
//进行递归
viod quick_sort(int arr[],int low,int high)
{
if(low<high){
int mid=partition(arr,low,high);
quick_sort(arr,low,mid-1);
quick_sort(arr,mid+1;high);
}
}