美文网首页
如何在一分钟内写出快排?

如何在一分钟内写出快排?

作者: chanyi | 来源:发表于2020-03-10 17:04 被阅读0次

快排的主要思想:(假设是从小到大排列)找一个数为比较数(也叫轴)将数组中大于此比较数的放在右边,将小于此比较数的放在左边,然后递归左右两边的区域。即可。
可以分步考虑。分为三步:排序判断,划分区间,两次递归

1、排序判断

判断左下标是否小于右下标

if(left < right)

2、划分区间并返回中间位置

选择左一值为pivot,从左一开始依次判断,小于pivot,交换位置

void partition(int[] array,int left, int right)
{
    int p=array[left];
    int i=left,j;
    for(j=left+1;j<=right;j++)
    {
        if(array[j]<p)
        {
            i++;
            swap(array,i,j);
        }
    }
    swap(array,i,left);
    return i;
}

3、两次递归

递归左边区域和右边区域

quicksort(array,left,pivot-1);
quicksort(array,pivot+1,right);

完整代码

void quicksort(int[] array, int left, int right)
{
    if(left<right)
    {
        int pivot=partition(array,left,right);
        quicksort(array,left,pivot-1);
        quicksort(array,pivot+1,right);
    }
}

参考资料:
https://www.cnblogs.com/figure9/archive/2010/12/10/1902711.html

相关文章

  • 如何在一分钟内写出快排?

    快排的主要思想:(假设是从小到大排列)找一个数为比较数(也叫轴)将数组中大于此比较数的放在右边,将小于此比较数的放...

  • 如何用powerbi自动获取最新的全国行政区划信息

    在《如何在一分钟内获取最新最全的全国行政区划信息》中,我提到如何在一分钟内获取全国最新最全的行政区划信息。 那个帖...

  • 中国一分钟(1)

    在中国,一分钟会发生什么? 中国如何在一分钟内为全球合作做出贡献? 一分钟,60秒,时间很...

  • 排序(下):如何用快排思想在 ○(n) 内查找第 k 大元素

    排序(下):如何用快排思想在 ○(n) 内查找第 k 大元素 快排核心思想就是 分治 和 分区,我们可以利用分区的...

  • 快排

    快排代码

  • 快排

  • 快排

    昨天晚上睡觉前兴起准备十分钟写出快排,结果纠结了两个小时愣是没有搞出来,很郁闷地睡觉去。今天地铁上跟LG又重新缕了...

  • 快排

    基本思想: 先从数列中取出一个数作为基准数。 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的...

  • 快排

  • 快排

    python实现 java实现:

网友评论

      本文标题:如何在一分钟内写出快排?

      本文链接:https://www.haomeiwen.com/subject/yucgdhtx.html