冒泡排序
//冒泡排序 相邻的两位排序 每一趟排序都把未排序的数字中最大的放到最后
function maoPao(arr){
for(let i = 0;i < arr.length;i++){//外层循环的是趟数
for(let j = 0;j < arr.length-i;j++){//内层循环的是每一趟相邻的两个数,每次循环结束的地方都是总长-趟数,因为已经走了几趟就有几个数字被排序好了
if(arr[j]>arr[j+1]){
let tmp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = tmp
}
}
}
return arr
}
简单选择排序
//简单选择排序 每一趟都找没有排序的数字里最小 放在没排好的数前面
function xuanZe(arr){
let minIndex = null
for(let i = 0;i < arr.length-1;i++){//外层循环的是趟数
minIndex = i
for(let j = i+1;j < arr.length;j++){//内层在找最小数的下标
if(arr[j]<arr[minIndex]){
minIndex = j
}
}
//交换最小数
let tmp = arr[minIndex]
arr[minIndex] = arr[i]
arr[i] = tmp
}
return arr
}
插入排序
//插入排序 每一趟选一个数字跟前面已经排好的数字进行比较
function chaRu(arr){
for(let i = 1;i < arr.length;i++){
let preIndex = i-1
let current = arr[i]
while(preIndex >= 0 && current < arr[preIndex]){
//如果上一个值大于当前值,要换变量
//这里不直接处理current是为了保留它的值,使用preIndex是为了改变它和它旁边的值
arr[preIndex+1] = arr[preIndex]
preIndex--
}
arr[preIndex+1] = current
}
return arr
}
希尔排序
//希尔排序 每一趟都根据一定的的间距选定几个数,对这几个数在它们各自的位置排序,一趟一趟下来间距越来越小
function xiEr(arr){
for(let i =