0%

排序算法

冒泡排序

每次排序找到最大的那个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

function bubble(arr){
let swapped = false
do{
swapped = false
for(let i =0;i<arr.length-1;i++){
if(arr[i] > arr[i+1]){
[arr[i],arr[i+1]] =[arr[i+1],arr[i]]
swapped = true;
}
}
}while(swapped)
return arr
}
console.log(bubble([9,6,3,6,8,0,6,2,3,5]))
/*
[
0, 2, 3, 3, 5,
6, 6, 6, 8, 9
]
*/

选择排序

每次循环要跟当前循环的最小值交换数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function selectionsort(arr){
const len = arr.length;
let sortIndex = 0
while(sortIndex < len){
// 将第一个没有排序的元素设置为最小值
// let min = arr[sortIndex]
let minIndex = sortIndex
// 遍历每个没有排序过的元素
for(let i=sortIndex;i<len;i++){
// 更新最小值
if(arr[i] < arr[minIndex]){
minIndex = i
}

}
[arr[sortIndex],arr[minIndex]] = [arr[minIndex],arr[sortIndex]]
sortIndex++
}
return arr
}
selectionsort([45,
50,
32,
4,
37,
10,
47,
44,
17,
38,
26,
25,
37,
17,
1,
3,
7])
/**
*
[
1, 3, 4, 7, 10, 17, 17,
25, 26, 32, 37, 37, 38, 44,
45, 47, 50
]
* /

插入排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

function insertsort(arr){
let sortIndex = 0
const len = arr.length
// 遍历每个没有排序过的元素ß
while(sortIndex < len){
let currentIndex = sortIndex
const x = arr[currentIndex]
for(let i = sortIndex-1;i>=0;i--){
if(x < arr[i]){
// 元素交换之后更新索引,将较小的元素往左移动
[arr[i],arr[currentIndex]] = [arr[currentIndex],arr[i]]
currentIndex = i
}
}
sortIndex++
}
return arr
}

应该还有几个排序。。。等这段时间忙完再补上