冒泡排序
冒泡排序:相邻元素两两相比,每一次冒泡都可以找出最大/最小的元素。
const bubbleSort = (arr) => {
for (let i = 0; i < arr.length; i++) {
for(let j = 0; j < arr.length-1-i; j++) {
if (arr[j] > arr[j+1]) {
const temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
console.log('冒泡排序',bubbleSort([1,9,2,6,4,8,2,6,1,7]));
// [1, 1, 2, 2, 4, 6, 6, 7, 8, 9]
选择排序
选择排序:选择排序是每次会从未排序的区间中找到最小的元素,将其放到头部
const selectionSort = (arr) => {
for (let i = 0; i < arr.length; i++) {
for(let j = i+1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
const temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
return arr;
}
console.log('选择排序',bubbleSort([1,9,2,6,4,8,2,6,1,7]));
// [1, 1, 2, 2, 4, 6, 6, 7, 8, 9]
插入排序
插入排序:每次从未排序的区间拿出一个元素,在已排序区间找到合适的地方插入
const insertionSort = (arr) => {
for (let i = 1; i < arr.length; i++) {
for(let j = i; j > 0; j--) {
if (arr[j] > arr[j-1]) {
const temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
console.log('插入排序',bubbleSort([1,9,2,6,4,8,2,6,1,7]));
// [1, 1, 2, 2, 4, 6, 6, 7, 8, 9]