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

    诀要:

    1. 找基数,一般就取数组第一个 array[0] ;
    2. 从右边遍历找到比基数小的,将值赋值给左边;
    3. 从左边遍历找到比基数大的,将值赋值给右边;
    4. 依次重复 2,3 步骤,直到左右两边遍历的下标序数相等;
    5. 将基数赋值给当前左边(or右边,经过遍历左遍历和右遍历的当前下标相等);
    6. 以基数分割数组为左右两部分(分治法),递归计算分部的排序。

    代码截图

    算法代码手写稿,去掉打印的代码

    精简后的代码:

            /// <summary>
            /// 快速排序
            /// </summary>
            /// <param name="array"></param>
            /// <param name="left"></param>
            /// <param name="right"></param>
            private void QuickSort(int[] array,int left,int right)
            {
                int originalLeft = left, originalRight = right;
                int baseNumber = array[left];
                while (right > left)
                {
                    while (right > left && array[right] >= baseNumber) right--;
                    array[left] = array[right];
                    while (left < right && array[left] <= baseNumber) left++;
                    array[right] = array[left];
                }
                array[left] = baseNumber;
                if(originalLeft < left - 1) QuickSort(array, originalLeft, left - 1);
                if(originalRight > right + 1) QuickSort(array, right + 1, originalRight);
            }

    author:韦小明

    本文即原文:排序算法之快速排序

    本文路径:https://www.cnblogs.com/youler/p/13747062.html

  • 相关阅读:
    调接口
    500 Internal Server Error
    htaccess跨域
    Header add Access-Control-Allow-Origin: *
    如何写jquery插件
    笔记
    互联网思维,谁的思维?
    超强js博客值得学习!!!
    学好js的步骤
    NOIP2000 进制转换
  • 原文地址:https://www.cnblogs.com/youler/p/13795547.html
Copyright © 2011-2022 走看看