• 常见算法之18---快速排序


    快速排序基本思想
    选定一个中枢元素,以其为基准点,将小于它的数放在其前面,大于其的数放在后面,把中枢元素放在最终合适的位置。然后再对左右两边分别递归。

     

    快速排序的基本步骤:
    1 初始时,以第一个元素作为中枢元素。低指针指向第一个元素,高指针指向最后一个元素。
    2 当中枢元素在低指针时,从高指针开始向前查询第一个小于中枢元素的数,并交换这个数和中枢元素。将中枢元素移到高指针的位置。
    3 当中枢元素在高指针时,处理方式同上相反。
    4 当高低指针指向同一个位置时,说明完成一轮排序,此时中枢元素处在了最终的位置上。
    5 之后,再对中枢元素两边进行相同操作。

     

    基本代码:

    public static void quickSort(int[] array, int start, int end) {
    if (start < end) {
      //上述1
      int low = start;
      int high = end;
      int index = start;
      boolean highFlag = true;

      //上述4
      while (low < high) {
        //上述2
        if (highFlag) {

          while (array[index] <= array[high] && low < high) {

                             //low < high判断是有必要的,不加的话,也可能造成越界异常。
            high--;
          }

        int temp = array[index];
        array[index] = array[high];
        array[high] = temp;

        index = high;
        highFlag = false;
        }

        //上述3
        else {
          while (array[index] >= array[low] && low < high) {

            low++;
          }

          int temp = array[index];
          array[index] = array[low];
          array[low] = temp;

          index = low;
          highFlag = true;
         }
      }
      //上述5
      quickSort(array, start, low - 1);
      quickSort(array, low + 1, end);
      }
    }

  • 相关阅读:
    vue监听多个变量的方法
    Unicode与JavaScript详解
    两个数组合并的方法
    第13章 事件
    第12章 DOM2和DOM3
    IIS发布WebService的一些常见问题
    Openlayers修改矢量要素并且可捕捉
    Openlayers修改矢量要素
    openlayers画图形返回范围
    前台html与后台php通信(上传文件)
  • 原文地址:https://www.cnblogs.com/xiaoChongUp/p/3388921.html
Copyright © 2020-2023  润新知