快速排序基本步骤
1、在数组中选取基准值
2、在数组中比基准值小的摆放在左边,比基准值大的摆放在右边,分割结束后基准值会插到中间位置。
3、使用递归,对左右两边重复分割。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>快速排序</title>
</head>
<body>
<script>
var arr = [66, 36, 10, 83, 35, 68, 25, 20]
/*
66 - 基准值
*/
var len = arr.length - 1
sort(arr, 0, len)
function sort(arr, start, end) {
if (start >= end) {
return arr
}
var num = arr[start] //- 基准值
var i = start
var j = end
var onOff = true
while (i < j) {
onOff = false
// 从左边起,寻找比基数大的数
while (arr[i] <= num && i <= j) {
i++
}
// 从右边起,寻找比基数小的数
while (arr[j] >= num && i <= j) {
j--
}
if (i < j) {
var n = arr[i]
arr[i] = arr[j]
arr[j] = n
onOff = true
}
if (!onOff) {
break
}
console.log(arr);
}
if (num > arr[j]) {
arr[start] = arr[j]
arr[j] = num
}
sort(arr, start, j - 1)
sort(arr, j + 1, end)
}
// console.log(arr[i], arr[j]);
console.log(arr);
</script>
</body>
</html>
排序结果: