码迷,mamicode.com
首页 > 编程语言 > 详细

C++之算法快速排序

时间:2014-11-05 14:46:09      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   for   sp   strong   div   on   

快速排序

 

思路:

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

具体操作:

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

开始循环:

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

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

 

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++之算法快速排序

标签:style   blog   color   ar   for   sp   strong   div   on   

原文地址:http://www.cnblogs.com/alazalazalaz/p/4076233.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!