zoukankan      html  css  js  c++  java
  • 快速排序算法JS实现

    function quickSort(arr, low, high){
          let i = low; //哨兵
          let j = high;//哨兵
          let pivot = arr[low];
          if(i >= j) {
            return;
          }
          while(i != j){
            while(i < j && arr[j] >= pivot)
              j--;
            while(i < j && arr[i] <= pivot)
              i++;
            if(i < j) {
              let temp = arr[j];
              arr[j] = arr[i];
              arr[i] = temp;
            }
          }
          arr[low] = arr[i];//每一次排序后将基准点放在正确的位置
          arr[i] = pivot;
          quickSort(arr, low, i -1);
          quickSort(arr, i + 1, high);
    }
    

    这样可以少一个变量:

       function quickSort(arr, low, high){
          let i = low;
          let j = high;
          let pivot = arr[low];
          if(i >= j) {
            return;
          }
          while(i != j){
            while(i < j && arr[j] >= pivot)
              j--;
            if(i < j)
              arr[i] = arr[j];
            while(i < j && arr[i] <= pivot)
              i++
            if(i < j)
              arr[j] = arr[i];
          }
          arr[i] = pivot;
          quickSort(arr, low, i -1);
          quickSort(arr, i + 1, high);
       }

    快速排序运用了分治法的思想,找到一个基准点,然后将集合分成两部分,左边的小于基准点,右边的大于基准点(从大到小排序的话),这样就将问题分成了结构类似的两个小问题,递归,直到每个集合里就剩下一个数据。每一次排序肯定会给基准点找到正确的位置。

  • 相关阅读:
    2019/1/2
    2018/12/22
    2018/12/18
    2018/12/17
    2018/12/16
    编程总结汇总
    学习总结汇总
    第十三周学习总结--助教
    第十一周编程总结
    第10周编程总结
  • 原文地址:https://www.cnblogs.com/jiumengmeng/p/9051545.html
Copyright © 2011-2022 走看看