let a = [9,7,6,1,4,2,5]
//冒泡:两两比较
function bubleSort(arr) {
let len = arr.length
for(let out = 0;out < len- 1 ; out++){
for(let inner = 0;inner < len-1-out; inner++){
if(arr[inner] > arr[inner +1]){
[arr[inner],arr[inner+1]] = [arr[inner+1],arr[inner]]
}
}
}
return arr
}
console.log(bubleSort(a))
//选择排序: 遍历元素,找到最小的元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
let b = [9,7,6,1,4,2,5]
function selectSort(arr){
let len = arr.length
let minIndex
for(let out = 0;out < len- 1 ; out++){
//假设最小值
minIndex = out
//与minIndex后面的逐个进行比较,找出最小的
for(let inner = out +1 ;inner < len; inner++){
if(arr[minIndex] > arr[inner]){
minIndex = inner
}
}
[arr[out],arr[minIndex]] = [arr[minIndex],arr[out]]
}
return arr
}
console.log(selectSort(b))
//插入排序:
// (1) 从第一个元素开始,该元素可以认为已经被排序
// (2) 取出下一个元素,在已经排序的元素序列中从后向前扫描
// (3) 如果该元素(已排序)大于新元素,将该元素移到下一位置
// (4) 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
// (5)将新元素插入到下一位置中
// (6) 重复步骤2
let c = [9,7,6,1,4,2,5]
function insertSort(arr){
for(let i =1;i<arr.length;i++){
for(let j =i;j>0;j--){
if(arr[j]<arr[j-1]){
[arr[j],arr[j-1]]=[arr[j-1],arr[j]]
}else{
break
}
}
}
return arr
}
console.log(insertSort(c))
console