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

    本质来说,快速排序的过程就是不断地将无序元素集递归分割,一直到所有的分区只包含一个元素为止。

    由于快速排序是一种分治算法,我们可以用分治思想将快排分为三个步骤:
    1.分:设定一个分割值,并根据它将数据分为两部分
    2.治:分别在两部分用递归的方式,继续使用快速排序法 
    3.合:对分割的部分排序直到完成

     1 public int dividerAndChange(int[] args, int start, int end) 
     2         {   
     3             //标准值
     4             int pivot = args[start];
     5             while (start < end) {
     6                 // 从右向左寻找,一直找到比参照值还小的数值,进行替换
     7                 // 这里要注意,循环条件必须是 当后面的数 小于 参照值的时候
     8                 // 我们才跳出这一层循环
     9                 while (start < end && args[end] >= pivot)
    10                     end--;
    11     
    12                 if (start < end) {
    13                     swap(args, start, end);
    14                     start++;
    15                 }
    16     
    17                 // 从左向右寻找,一直找到比参照值还大的数组,进行替换
    18                 while (start < end && args[start] < pivot)
    19                     start++;
    20     
    21                 if (start < end) {
    22                     swap(args, end, start);
    23                     end--;
    24                 }
    25             }
    26     
    27             args[start] = pivot;
    28             return start;
    29         }
    30 
    31         public void sort(int[] args, int start, int end) 
    32         {
    33             //当分治的元素大于1个的时候,才有意义
    34             if ( end - start > 1) {
    35                 int mid = 0;
    36                 mid = dividerAndChange(args, start, end);
    37                 // 对左部分排序
    38                 sort(args, start, mid);
    39                 // 对右部分排序
    40                 sort(args, mid + 1, end);
    41             }
    42         }
    43 
    44         private void swap(int[] args, int fromIndex, int toIndex) 
    45         {
    46             args[fromIndex] = args[toIndex];
    47         }
  • 相关阅读:
    JDOJ 2430: 组合数取模
    USACO Dual Palindromes
    洛谷 P1365 WJMZBMR打osu! / Easy
    洛谷 P6154 游走
    洛谷 P1654 OSU!
    洛谷 P3802 小魔女帕琪
    洛谷 P1784 数独
    POJ King Arthur's Birthday Celebration
    洛谷 P4550 收集邮票
    洛谷 SP1026 FAVDICE
  • 原文地址:https://www.cnblogs.com/yl-saber/p/6932370.html
Copyright © 2011-2022 走看看