JAVA-快速排序算法

来源:互联网 发布:在win7下安装ubuntu 编辑:程序博客网 时间:2024/05/21 20:38

快速排序算法思想:从数组的头部和尾部分别开始扫描,首先默认数组的第一个数为中间枢纽,然后扫描数组,如果小于这个中间枢纽则排在左边,如果大于则排在右边。

方法代码:

// 最初调用:quickSort(arr, 0, arr.length - 1); /**      * 先按照数组为数据原型写出算法,再写出扩展性算法。数组{49,38,65,97,76,13,27}      *       * @param array      * @param left      * @param right      */      public static void quickSort(int[] array, int left, int right) {          int pivotKey;          if (left < right) {              pivotKey = partitionByPivotValue(array, left, right);              // 对左右数组递归调用快速排序,直到顺序完全正确              quickSort(array, left, pivotKey - 1);              quickSort(array, pivotKey + 1, right);          }     }      /**      * pivotValue作为枢轴,较之小的元素排序后在其左,较之大的元素排序后在其右      *       * @param array      * @param left      * @param right      * @return      */      public static int partitionByPivotValue(int[] array, int left, int right) {          int pivotValue = array[left];          while (left < right) {              while (left < right && array[right] >= pivotValue) {                  --right;              }                array[left] = array[right];              while (left < right && array[left] <= pivotValue) {                  ++left;              }              array[right] = array[left];          }          array[left] = pivotValue;          print(array);        return left;      }
0 0
原创粉丝点击