首页 > 代码库 > C++之算法快速排序

C++之算法快速排序

快速排序

 

思路:

一个数组,随便选一个做基数,比它大的放他右边,比它小的放它左边,一轮下来就分成两组了,这两组再分别按刚才方法递归。

具体操作:

一个数组,第一个做基数取出来存在一个变量里,设置两个游标分别为数组开始和结束,

开始循环:

先按照游标从右到左依次选一个和基数比,该数比基数大就把结束游标向左移一位,比基数小的就把该数放到开始游标上去,此时再按照游标从左向右依次选一个数和基数比,该数比基数小就把开始游标向右移一位,比基数大就该数放到结束游标上去,再从新开始循环。

直到两个游标相等,开始递归。

 

int main (){    int data[] = {34,65,12,43,67,5,78,10,3,70} , k;    int len=sizeof(data)/sizeof(int);    quickSort(data , 0 , len-1);    for (int i = 0; i < len; i++)    {        cout<<data[i]<<"\n";    }}void quickSort(int array[] , int begin , int end){    if(begin<end){        int l = begin , r = end , x = array[begin];        while(l < r){            while(l<r && array[r]>=x)                r--;            if(l<r){                array[l] = array[r];                l++;            }            while(l<r && array[l]<x)                l++;            if(l<r){                array[r] = array[l];                r--;            }        }        array[l] = array[r] = x;        quickSort(array , begin , r-1);        quickSort(array , r+1 , end);    }}

 

C++之算法快速排序