各类排序算法
冒泡排序
比较相邻元素的大小,如果是升序,那么小的排前面,如果是降序,那么大的排前面
function bubbleSort() {
let a = [34, 12, 56, 12, 46, 112, 8, 6, 17, 33];
console.log('初始数组');
let flag = true;
for (let i = 0; i < a.length; i++) {
flag = true;
for (let j = 0; j < a.length - 1 - i; j++) {
if (a[j] > a[j + 1]) {
[a[j], a[j + 1]] = [a[j + 1], a[j]];
flag = false;
}
}
if (flag) { // 优化,减少循环次数
break;
}
console.log(a);
}
}
// 调用
bubbleSort();
快速排序
随便找一个元素作为排序的基准值,小于这个值的统统排到作边,大于这个值的统统放到右边
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
var pivotIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivotIndex, 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]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
}
arr = [6, 3, 9, 12, 1]
console.log(quickSort(arr))