let arr = [10,1,35,61,89,36,55]
// 冒泡排序
// for(let i = arr.length - 1; i > 0; i --){
// for(let j = 0; j < i; j ++){
// if(arr[j] > arr[j + 1]){
// let temp = arr[j]
// arr[j] = arr[j + 1]
// arr[j + 1] = temp
// }
// }
// }
// 选择排序
// let min
// for(let i = 0; i < arr.length; i ++){
// min = arr[i]
// for(let j = i + 1; j < arr.length; j ++){
// if(arr[i] > arr[j]){
// min = arr[j]
// arr[j] = arr[i]
// arr[i] = min
// }
// }
// }
// 快速排序
function quickSort(arr, left, right) {
let i = left,
j = right,
middle = arr[left];//取基准点
if (left >= right) {//如果数组为空或者只有一个元素,跳出递归
return;
};
while (i < j) {//当i=j跳出循环
while (arr[j] > middle && i < j) {//从右向左找第一个比基准点小的值
j--;
};
while (arr[i] <= middle && i < j) {//从左向右找第一个大于等于基准点的值,注意这里可以相等,是为了保证基准点的位置不变
i++;
};
if (i < j) {//交换值
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
};
// 当i和j相等,再和基准值交换值
arr[left] = arr[i];
arr[j] = middle;
quickSort(arr, left, i - 1);//递归基准点左边的数组,并且当left>=i-1跳出递归
quickSort(arr, i + 1, right);//递归基准点右边的数组,并且当i+1>=right跳出递归
};
quickSort(arr, 0, arr.length - 1);//[1, 4, 5, 6, 6, 9, 22]
console.log(arr)
console