【手写系列】手写快排

Posted on 2018-02-04 12:15  Unkn0wnnnnn  阅读(274)  评论(0)    收藏  举报

手写快排的基础思想就是先分后立,设置数组中的一个数为支点,针对这个支点,左边的数进行快排,右边也进行快排,依次递归。

实现源码如下:

int partision(int arr[],int left,int right){
    int k=left,point = arr[right];
    for(int i =left;i<right;i++)
        if(arr[i]<point){
            swap(arr[i],arr[k++]);
        }
    swap(arr[k],arr[right]);
    return k;
}
void quicksort(int arr[],int left,int right){
    if(left<right){
        int point=partision(arr[],left,right);
        quicksort(arr,left,point-1);
        quicksort(arr,point+1,right);
    }
}