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

快速排序

时间:2017-03-04 21:13:18      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:递归   算法   排序   大于   快速排序   元素   核心   ++   如何   

在实际中最常用的一种排序算法,速度快,效率高。

快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。

 

int quicksort(vector<int> &v, int left, int right)

{
        if(left < right){
                int key = v[left];
                int low = left;
                int high = right;
                while(low < high){
                        while(low < high && v[high] > key){
                                high--;
                        }
                        v[low] = v[high];
                        while(low < high && v[low] < key){
                                low++;
                        }
                        v[high] = v[low];
                }
                v[low] = key;
                quicksort(v,left,low-1);
                quicksort(v,low+1,right);
        }
}

快速排序

标签:递归   算法   排序   大于   快速排序   元素   核心   ++   如何   

原文地址:http://www.cnblogs.com/jaydenouyang/p/6502579.html

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