用JavaScript实现十大经典排序算法--快速排序

Posted Wendy-lxq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用JavaScript实现十大经典排序算法--快速排序相关的知识,希望对你有一定的参考价值。

       快速排序,这也是在实际中最常用的一种排序算法,速度快,效率高。就像名字一样,快速排序是最优秀的一种排序算法。

1)算法原理

      快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。

2)算法描述

     快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:

    <1> 从数列中挑出一个元素,称为 "基准"(pivot);

    <2> 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;

    <3> 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

3)javascript代码实现

function paritition(arr, low, high) 
  let pivot = arr[low];
  while (low < high) 
    while (low < high && arr[high] > pivot) 
      --high;
    
    arr[low] = arr[high];
    while (low < high && arr[low] <= pivot) 
      ++low;
    
    arr[high] = arr[low];
  
  arr[low] = pivot;
  return low;


function quickSort(arr, low, high) 
  if (low < high) 
    let pivot = paritition(arr, low, high);
    quickSort(arr, low, pivot - 1);
    quickSort(arr, pivot + 1, high);
  
  return arr;


  var arr=[1,45,37,5,48,15,37,26,29,2,46,4,17,50,52];    
  console.log(quickSort(arr,0,arr.length-1));  
4)算法分析

    最佳情况:T(n) = O(nlogn)
    最差情况:T(n) = O(n^2)
    平均情况:T(n) = O(nlogn)


十大算法列表:

1.用JavaScript实现十大经典排序算法--冒泡排序

2.用JavaScript实现十大经典排序算法--选择排序

3.用JavaScript实现十大经典排序算法--插入排序

以上是关于用JavaScript实现十大经典排序算法--快速排序的主要内容,如果未能解决你的问题,请参考以下文章

用 Python 实现十大经典排序算法

一起来用python实现一下十大经典排序算法呀

一文搞定十大经典排序算法(Java实现)

十大经典排序算法总结(快速排序)

动态展示十大经典算法

吴裕雄--天生自然数据结构:十大经典排序算法——快速排序