2021.03.29.jssort


title:js排序实现
tags:[sort]

categories:随笔

1.冒泡排序

1.从头开始遍历数组的两个相邻元素,如果第一个比较大,则交换顺序,否则不变,这样一轮下来,最后一个数字为最大的数字;

2.对除了最后一个数以外的数据进行遍历,直到只剩下一个数;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function bubbleSort(arr: Array<number>) {
let arrLength = arr.length
// for
for (let i = arrLength - 1; i > 0; i--) {
for (let j = 0; j <= i; j++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
}

}

}
return arr
}

2.选择排序

1.找出最小的数字,放在第一位;

2.找出第二小的数字,放在第二位;

3.以此类推,直到结束

1
2
3
4
5
6
7
8
9
10
11
12
function selectionSort(arr: Array<number>) {
let arrLength = arr.length
for (let i = 0; i < arrLength; i++) {
for (let j = i; j < arrLength; j++) {
if (arr[i] > arr[j]) {
[arr[i], arr[j]] = [arr[j], arr[i]]
}
}
}
return arr

}

3.插入排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function insertionSort(arr: Array<number>) {
let newArr: Array<number> = [arr[0]]
for (let i = 1; i < arr.length; i++) {
for (let j = 0; j < newArr.length; j++) {

if (arr[i] <= newArr[j]) {
newArr.splice(j, 0, arr[i])
}
else if (arr[i] > newArr[j] && arr[i] <= newArr[j + 1]) {
newArr.splice(j + 1, 0, arr[i])
}
else if (j == newArr.length - 1) {
newArr.splice(newArr.length, 0, arr[i])
}
else {
continue
}
break
}
}
return newArr

}
thank u !