Skip to content

Commit 4c5914f

Browse files
committed
feat: sort
1 parent fa16b28 commit 4c5914f

File tree

6 files changed

+86
-10
lines changed

6 files changed

+86
-10
lines changed

js-sort/InsertSort.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@
1414
* 6. 重复步骤2~5。
1515
*/
1616
const InsertSort = (arr = []) => {
17+
let cur, index;
1718
for (let i = 1; i < arr.length; i++) {
18-
const cur = arr[i];
19-
let index = i - 1;
19+
cur = arr[i];
20+
index = i - 1;
2021
while (index > 0 && cur < arr[index]) {
2122
arr[index + 1] = arr[index];
2223
index--;

js-sort/MapSort.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,12 @@
1313
* @returns 'object Array'
1414
*/
1515
const MapSort = (arr = []) => {
16-
console.log(this);
1716
for (let i = 0; i < arr.length; i++) {
18-
for (let j = i + 1; j < arr.length; j++) {
19-
if (arr[i] > arr[j]) {
20-
const temp = arr[i];
21-
arr[i] = arr[j];
22-
arr[j] = temp;
17+
for (let j = 0; j < arr.length - 1 - i; j++) {
18+
if (arr[j] > arr[j + 1]) {
19+
const temp = arr[j];
20+
arr[j] = arr[j + 1];
21+
arr[j + 1] = temp;
2322
}
2423
}
2524
}

js-sort/MergeSort.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
2+
3+
const MergeSort = (arr) => {
4+
const len = arr.length;
5+
if (len < 2) return arr;
6+
const middle = Math.floor(len / 2);
7+
const left = arr.slice(0, middle);
8+
const right = arr.slice(middle);
9+
return merge(MergeSort(left), MergeSort(right));
10+
}
11+
const merge = (left, right) => {
12+
const res = [];
13+
while (left.length > 0 && right.length > 0) {
14+
if (left[0] < right[0]) {
15+
res.push(left.shift());
16+
} else {
17+
res.push(right.shift());
18+
}
19+
}
20+
while (left.length) {
21+
res.push(left.shift());
22+
}
23+
while (right.length) {
24+
res.push(right.shift());
25+
}
26+
return res;
27+
}

js-sort/QuickSort.js

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
function quickSort(arr, left, right) {
2+
var len = arr.length,
3+
partitionIndex,
4+
left = typeofleft != 'number' ? 0 : left,
5+
right = typeofright != 'number' ? len - 1 : right;
6+
7+
if (left < right) {
8+
partitionIndex = partition(arr, left, right);
9+
quickSort(arr, left, partitionIndex - 1);
10+
quickSort(arr, partitionIndex + 1, right);
11+
}
12+
return arr;
13+
}
14+
15+
function partition(arr, left, right) { // 分区操作
16+
var pivot = left, // 设定基准值(pivot)
17+
index = pivot + 1;
18+
for (var i = index; i <= right; i++) {
19+
if (arr[i] < arr[pivot]) {
20+
swap(arr, i, index);
21+
index++;
22+
}
23+
}
24+
swap(arr, pivot, index - 1);
25+
return index - 1;
26+
}
27+
28+
function swap(arr, i, j) {
29+
vartemp = arr[i];
30+
arr[i] = arr[j];
31+
arr[j] = temp;
32+
}

js-sort/SelectSort.js

+17
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,21 @@
55
* @LastEditTime: 2021-03-15 17:12:55
66
*/
77

8+
const SelectSort = (arr) => {
9+
const len = arr.length;
10+
for (let i = 0; i < len; i++) {
11+
let minIndex = i;
12+
for (let j = i + 1; j < len; j++) {
13+
if (arr[j] < arr[minIndex]) {
14+
minIndex = j;
15+
}
16+
}
17+
const temp = arr[minIndex];
18+
arr[minIndex] = arr[i];
19+
arr[i] = temp;
20+
}
21+
}
22+
const a = [10, 1, 2, 4, 5, 1, 2, 7, 6, 4, 7, 8];
23+
SelectSort(a);
24+
console.log(a);
825

js/obj2arr.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ const deep = (node) => {
3030
name: cur.name
3131
})
3232
const children = cur.children;
33-
if (children && children.length) [
33+
if (children && children.length) {
3434
children.forEach(item => {
3535
stack.push(item);
3636
})
37-
]
37+
}
3838
}
3939
console.log(res);
4040
}

0 commit comments

Comments
 (0)