zoukankan      html  css  js  c++  java
  • 排序算法学习之快速排序

        快速排序基本思想:选取一个枢轴元素(图简单可选第一个),通过对序列一次遍历(中间涉及到数的交换),将该枢轴放置到序列合适位置,保证其左边数都比它小,右边数都比它大,然后利用递归思想对其左右两个子序列进行同样排序。

        快熟排序的基本实现过程:将枢轴元素key备份,序列头尾各设置一个游标——i和j,尾部游标j先移动(如果选择的最后一个元素为枢轴则i先移),直到遇到比key小的元素,将其移到原枢轴处覆盖之,此时j处元素空着了,然后再对i进行移动,直到遇到比key大的元素,将其移到右边下表为j的空白处

    void QuickSort (int left, int right, int *array)
    {
        if(left>=right)
            return ;
        int i=left, j=right;
        int key=array[i];
        while (i<j)
        {
            while (i<j && array[j]>=key)
                j--;
            array[i] = array[j];
            while (i<j && array[i]<=key)
                i++;
            array[j] = array[i];
        }
        array[i] = key;
        QuickSort(left, i-1, array);
        QuickSort(i+1, right, array);
    }
  • 相关阅读:
    20180315 代码错题(7)
    20180315 代码错题(6)
    20180315 代码错题(5)
    20180315 代码错题(4)
    01背包问题(动态规划)
    等差素数列 暴力搜索
    小L记单词
    三角形
    小L的试卷
    小L的项链切割 (回文串)
  • 原文地址:https://www.cnblogs.com/lifan/p/3718466.html
Copyright © 2011-2022 走看看