实现思路:
1. 从数列中挑出一个元素,称为”基准”(pivot),
2.重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任一边)。
在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
3.递归地(recursively)把小于基准值元素的子数列和大于基准值元素的子数列排序
<!DOCTYPE html>
<html>
<head>
<title>qdabc.cn</title>
<meta charset="utf-8">
</head>
<script type="text/javascript">
var quickSort = function(arr) {
console.time('1.快速排序耗时');
if (arr.length <= 1) { return arr; }
var pivot = arr.splice(0, 1)[0];
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++){
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
console.timeEnd('2.快速排序耗时');
return quickSort(left).concat([pivot], quickSort(right));
};
var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
console.log(quickSort(arr));//[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
</script>
<body>
</body>
</html>
欢迎分享本文,转载请保留出处:前端ABC » js如何实现数组排序
前端ABC