zoukankan      html  css  js  c++  java
  • 基础为技术之本_快速排序

    八大排序之一:快速排序。

    快速排序可能是最常被提到的排序算法了,快排的思想是,选取第一个数为基准,通过一次遍历将小于它的元素放到它的左侧,将大于它的元素放到它的右侧,然后对它的左右两个子序列分别递归地执行同样的操作。

    /// <summary>
        /// 快速排序
        /// </summary>
        /// <param name="array">数组</param>
        /// <param name="left">起始位</param>
        /// <param name="right">终点位</param>
        public void QuickSort(int[] array,int left,int right)
        {
            //左下标一定小于右下标,否则就超越了
            if (left < right)
            {
                //对数组进行分割,取出下次分割的基准标号
                int i = Division(array, left, right);
    
                //对“基准标号“左侧的一组数值进行递归的切割,以至于将这些数值完整的排序
                QuickSort(array, left, i - 1);
    
                //对“基准标号“右侧的一组数值进行递归的切割,以至于将这些数值完整的排序
                QuickSort(array, i + 1, right);
            }
        }
    
    
        /// <summary>
        /// 分治
        /// </summary>
        /// <param name="list">需要分治的数组</param>
        /// <param name="left">左边标记</param>
        /// <param name="right">右边标记</param>
        /// <returns></returns>
        int Division(int[] array, int left,int right)
        {
            int baseNum = array[left];
            while (left < right)
            {
                while (left < right && array[right] >= baseNum)
                {
                    right--;
                }
                array[left] = array[right];
                while (left < right && array[left] <= baseNum)
                {
                    left++;
                }
                array[right] = array[left];
            }
            array[left] = baseNum;
    
            return left;
        }

    不同的排序算法使用的场合也不尽相同,快排虽然总体的平均效率O(nlogn)最好,但是也有极端机框,如果需要排列的数组是一个已经倒序数组,那么排序的效率就只有O(n^2)了,所以快速排序也是一个不稳定排序,具体情况具体分析也是很重要的。

  • 相关阅读:
    naotu.baidu.com 非常棒的脑图在线工具
    编程常用英语词汇大全
    我的总结,编程人生
    排序箭头,升序,降序简单实现
    jquery网页倒计时效果,秒杀,限时抢购!
    echarts入门,5分钟上手写ECharts的第一个图表
    严谨的程序案例Api
    github Travis CI 持续集成
    Cmake使用
    Linxu安装Lamp环境
  • 原文地址:https://www.cnblogs.com/zangjiapei/p/11435403.html
Copyright © 2011-2022 走看看