Javascript实现冒泡排序、选择排序、插入排序、快速排序
function bobbleSort(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
function selectSort(arr) {
let max = 0;
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length - i; j++) {
console.log(max);
if (arr[j] > arr[max]) {
max = j;
}
}
let temp = arr[arr.length - i - 1];
arr[arr.length - i - 1] = arr[max];
arr[max] = temp;
}
return arr;
}
function insertSort(arr) {
let result = [];
result[0] = arr[0];
for (let i = 1; i < arr.length; i++) {
for (let j = result.length - 1; j >= 0; j--) {
if (result[j] > arr[i]) {
result[j + 1] = result[j];
if (j === 0) {
result[j] = arr[i];
}
} else {
result[j + 1] = arr[i];
break;
}
}
}
return result;
}
function quickSort(arr) {
function sort(start, end) {
if (start >= end) {
return;
}
let [left, right, key] = [start, end, arr[start]];
while (left < right) {
while (left < right && key < arr[right]) {
right--;
}
arr[left] = arr[right];
while (left < right && key >= arr[left]) {
left++;
}
arr[right] = arr[left];
}
arr[left] = key;
sort(start, left - 1);
sort(right + 1, end);
}
sort(0,arr.length-1);
return arr;
}
基础排序算法只要对流程成竹在胸,实现很简单。考量的是快速把逻辑转换为代码的能力。