用JavaScript实现十大经典排序算法--快速排序
2017-09-13 22:08
936 查看
快速排序,这也是在实际中最常用的一种排序算法,速度快,效率高。就像名字一样,快速排序是最优秀的一种排序算法。
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实现十大经典排序算法--插入排序
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实现十大经典排序算法
- 十大经典排序算法的 JavaScript 实现
- 十大经典排序算法的 JavaScript 实现
- 十大经典排序算法的 JavaScript 实现
- 用JavaScript实现十大经典排序算法--插入排序
- 十大经典排序算法的 JavaScript 实现
- 用JavaScript实现十大经典排序算法--冒泡排序
- 十大经典排序算法的 JavaScript 实现
- 用JavaScript实现十大经典排序算法--选择排序
- C#实现所有经典排序算法(选择排序 冒泡排序 快速排序)
- C#实现所有经典排序算法(选择排序 冒泡排序 快速排序)
- JavaScript十大经典排序算法
- 【归纳整理】十大经典排序算法的简单C++实现
- 十大经典排序算法皇冠体育足球竞猜源码下载最强总结(含JAVA代码实现)
- 先码后看 十大经典排序算法最强总结(含Java代码实现) 侵立删
- 十大经典排序算法总结(JavaScript描述)
- C#实现所有经典排序算法(选择排序 冒泡排序 快速排序)
- JavaScript 十大经典排序算法
- JavaScript十大经典排序算法
- JavaScript十大经典排序算法