冒泡排序
function sort(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]){
[arr[j],arr[j + 1]] = [arr[j + 1],arr[j]];
}
}
}
return arr
}
冒泡排序就是用数组中第一个值和所有值进行比较,选出最大的值放到数组最后。下一次遍历的时候就不需遍历最后一个值,以此类推。
选择排序
function sort(arr) {
let minIndex;
for(let i = 0;i<arr.length - 1;i++){
minIndex = i;
for(j = i + 1;j<arr.length;j++){
if(arr[j] < arr[minIndex]){
minIndex = j;
}
}
[arr[i],arr[minIndex]] = [arr[minIndex],arr[i]];
}
return arr;
}
选择排序就是刚开始排序的时候初始化数组第一位是最小值的下标,然后将第一位和其余所有值进行比较,如假定最小值大于比较值时,将较小值下标赋值给minIndex,最后进行互换。
插入排序
function sort(arr) {
for(let i = 1;i<arr.length;i++){
let compareVal = arr[i];
let j = i - 1;
while (arr[j] > compareVal) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = compareVal;
}
return arr;
}
插入排序就是假定数组中第一个值是最小值,然后取第二个值与之相比较,以此类推。
快速排序
let arr = [1,3,5,7,9,2,4,6,8,10];
const quickSort = function (arr) {
if(arr.length <= 1){
return arr;
}
let leftArr = [],rightArr = [];
let middleIndex = Math.floor(arr.length / 2);
let middleVal = arr.splice(middleIndex,1)[0];
for(let i = 0;i<arr.length;i++){
if(middleVal > arr[i]){
leftArr.push(arr[i]);
}else{
rightArr.push(arr[i]);
}
}
return quickSort(leftArr).concat([middleVal],quickSort(rightArr))
};