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);
    }
  • 相关阅读:
    编程总结3
    编程总结2
    编程总结1
    对我影响最深的老师
    自我介绍
    BFC 规则及解决的问题?
    简述 CSS 精灵图原理,及优缺点?
    等高布局、圣杯布局、双飞翼布局的实现原理
    CSS 基本选择器有哪些?
    CSS 引入方式有哪些?
  • 原文地址:https://www.cnblogs.com/lifan/p/3718466.html
Copyright © 2011-2022 走看看