冒泡排序
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
}
冒泡排序就是用數(shù)組中第一個值和所有值進行比較,選出最大的值放到數(shù)組最后。下一次遍歷的時候就不需遍歷最后一個值,以此類推。
選擇排序
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;
}
選擇排序就是剛開始排序的時候初始化數(shù)組第一位是最小值的下標,然后將第一位和其余所有值進行比較,如假定最小值大于比較值時,將較小值下標賦值給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;
}
插入排序就是假定數(shù)組中第一個值是最小值,然后取第二個值與之相比較,以此類推。
快速排序
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))
};