排序算法之快速排序

诀要:

  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

 

posted @ 2020-10-10 21:50  蓝色咖啡屋  阅读(106)  评论(0编辑  收藏  举报
韦小明(email:3301526363@qq.com)