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

快速排序算法的实现

时间:2016-05-23 22:37:18      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:

排序算法就像是数字信号里边的傅里叶变换一样基础,在此继续温习一遍。

技术分享
void change_integer(int *p1, int *p2)
{
    int tmp = *p1;
    *p1 = *p2;
    *p2 = tmp;
}

int partion(int arr[], int length, int start, int end)
{
    int index = rand()%(end-start+1) + start;
    change_integer(arr+index, arr+end);
    int small_pos = start-1;
    for(int i=start; i<end; ++i)
    {
        if(arr[i] < arr[end])
        {
            ++small_pos;
            change_integer(arr+small_pos, arr+i);
        }
    }
    ++small_pos;
    change_integer(arr+small_pos, arr+end);
    return small_pos;
}

void quick_sort(int a[], int length, int start, int end)
{
    if(start == end)
        return ;
    int index = partion(a, length, start, end);
    if(index > start)
    {
        quick_sort(a, length, start, index-1);
    }
    if(index < end)
    {
        quick_sort(a, length, index+1, end);
    }
}
View Code

 这里其实参考了《剑指offer》这本书里边的代码,但是书中交换部分部分代码如下

if(arr[i] < arr[end])
  {
   ++small_pos;
   if(small_pos != i)
    change_integer(arr+small_pos, arr+i);
  }

不太理解这里为什么判断small_pos != i,个人觉得多余了。

快速排序算法的实现

标签:

原文地址:http://www.cnblogs.com/bestwangjie/p/5521547.html

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