Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 75e03da

Browse files
authored
feat: add sorting algorithms in javascript (doocs#358)
* add bubble sort in javascript * add insertion sort in javascript * add selection sort in javascript * add merge sort in javascript * add quick sort in javascript * reformat code * modify bubblesort * reformat code
1 parent 06d81ca commit 75e03da

File tree

10 files changed

+245
-0
lines changed

10 files changed

+245
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
function bubbleSort(inputArr) {
2+
let len = inputArr.length;
3+
let swapped = false;
4+
for (let i = 1; i <= len - 1; i++) {
5+
swapped = false;
6+
for (let j = 0; j < len - 1; j++) {
7+
if (inputArr[j] > inputArr[j + 1]) {
8+
let temp = inputArr[j];
9+
inputArr[j] = inputArr[j + 1];
10+
inputArr[j + 1] = temp;
11+
swapped = true
12+
}
13+
}
14+
if (swapped === false) break;
15+
}
16+
return (inputArr)
17+
}
18+
19+
let arr = [6, 3, 2, 1, 5];
20+
console.log(bubbleSort(arr))

‎basic/sorting/BubbleSort/README.md‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,30 @@ public class BubbleSort {
4141
}
4242
}
4343
```
44+
### **JavaScript**
45+
46+
```javascript
47+
function bubbleSort(inputArr) {
48+
let len = inputArr.length;
49+
let swapped = false;
50+
for (let i = 1; i <= len - 1; i++) {
51+
swapped = false;
52+
for (let j = 0; j < len - 1; j++) {
53+
if (inputArr[j] > inputArr[j + 1]) {
54+
let temp = inputArr[j];
55+
inputArr[j] = inputArr[j + 1];
56+
inputArr[j + 1] = temp;
57+
swapped = true
58+
}
59+
}
60+
if (swapped === false) break;
61+
}
62+
return (inputArr)
63+
}
64+
65+
let arr = [6, 3, 2, 1, 5];
66+
console.log(bubbleSort(arr))
67+
```
4468

4569
<!-- tabs:end -->
4670

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
function insertionSort(inputArr) {
2+
let len = inputArr.length;
3+
for (let i = 1; i <= len - 1; i++) {
4+
let temp = inputArr[i];
5+
let j = i - 1;
6+
while (j >= 0 && inputArr[j] > temp) {
7+
inputArr[j + 1] = inputArr[j];
8+
j--;
9+
}
10+
inputArr[j + 1] = temp;
11+
}
12+
return (inputArr);
13+
}
14+
15+
let arr = [6, 3, 2, 1, 5];
16+
console.log(insertionSort(arr))

‎basic/sorting/InsertionSort/README.md‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,25 @@ public class InsertionSort {
4141
}
4242
}
4343
```
44+
### **JavaScript**
45+
```javascript
46+
function insertionSort(inputArr) {
47+
let len = inputArr.length;
48+
for (let i = 1; i <= len - 1; i++) {
49+
let temp = inputArr[i];
50+
let j = i - 1;
51+
while (j >= 0 && inputArr[j] > temp) {
52+
inputArr[j + 1] = inputArr[j];
53+
j--;
54+
}
55+
inputArr[j + 1] = temp;
56+
}
57+
return (inputArr);
58+
}
59+
60+
let arr = [6, 3, 2, 1, 5];
61+
console.log(insertionSort(arr))
62+
```
4463

4564
<!-- tabs:end -->
4665

‎basic/sorting/MergeSort/MergeSort.js‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
function mergeSort(arr) {
2+
if (arr.length < 2) return arr;
3+
let mid = Math.ceil(arr.length / 2);
4+
let arrLeft = mergeSort(arr.splice(0, mid));
5+
let arrRight = mergeSort(arr.splice(-mid));
6+
return merge(arrLeft, arrRight);
7+
}
8+
9+
function merge(arr1, arr2) {
10+
let arr = [];
11+
while (arr1.length && arr2.length) {
12+
if (arr1[0] < arr2[0]) {
13+
arr.push(arr1.shift());
14+
} else {
15+
arr.push(arr2.shift());
16+
}
17+
}
18+
return [...arr, ...arr1, ...arr2];
19+
20+
}
21+
22+
arr = [3, 5, 6, 2, 1, 7, 4];
23+
console.log(mergeSort(arr));

‎basic/sorting/MergeSort/README.md‎

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,35 @@ public class MergeSort {
5656
}
5757
```
5858

59+
### **JavaScript**
60+
61+
```JavaScript
62+
function mergeSort(arr) {
63+
if (arr.length < 2) return arr;
64+
let mid = Math.ceil(arr.length / 2);
65+
let arrLeft = mergeSort(arr.splice(0, mid));
66+
let arrRight = mergeSort(arr.splice(-mid));
67+
return merge(arrLeft, arrRight);
68+
}
69+
70+
function merge(arr1, arr2) {
71+
let arr = [];
72+
while (arr1.length && arr2.length) {
73+
if (arr1[0] < arr2[0]) {
74+
arr.push(arr1.shift());
75+
} else {
76+
arr.push(arr2.shift());
77+
}
78+
}
79+
return [...arr, ...arr1, ...arr2];
80+
81+
}
82+
83+
arr = [3, 5, 6, 2, 1, 7, 4];
84+
console.log(mergeSort(arr));
85+
```
86+
87+
5988
<!-- tabs:end -->
6089

6190
## 算法分析

‎basic/sorting/QuickSort/QuickSort.js‎

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
function quickSort(arr) {
2+
let len = arr.length;
3+
return qSort(arr, 0, len - 1);
4+
}
5+
6+
function qSort(arr, left, right) {
7+
if (left < right) {
8+
let index = partition(arr, left, right);
9+
qSort(arr, left, index - 1);
10+
qSort(arr, index + 1, right);
11+
}
12+
return arr;
13+
}
14+
15+
function partition(arr, left, right) {
16+
let temp = arr[left];
17+
while (left < right) {
18+
while (left < right && arr[right] > temp) {
19+
right--;
20+
}
21+
arr[left] = arr[right];
22+
while (left < right && arr[left] <= temp) {
23+
left++;
24+
}
25+
arr[right] = arr[left];
26+
}
27+
arr[left] = temp;
28+
console.log(arr)
29+
return left;
30+
}
31+
32+
arr = [3, 5, 6, 2, 1, 7, 4];
33+
console.log(quickSort(arr))

‎basic/sorting/QuickSort/README.md‎

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,44 @@ public class QuickSort {
5353
System.out.println(Arrays.toString(nums));
5454
}
5555
}
56+
```
57+
### **JavaScript**
58+
59+
```javascript
60+
function quickSort(arr) {
61+
let len = arr.length;
62+
return qSort(arr, 0, len - 1);
63+
}
64+
65+
function qSort(arr, left, right) {
66+
if (left < right) {
67+
let index = partition(arr, left, right);
68+
qSort(arr, left, index - 1);
69+
qSort(arr, index + 1, right);
70+
}
71+
return arr;
72+
}
73+
74+
function partition(arr, left, right) {
75+
let temp = arr[left];
76+
while (left < right) {
77+
while (left < right && arr[right] > temp) {
78+
right--;
79+
}
80+
arr[left] = arr[right];
81+
while (left < right && arr[left] <= temp) {
82+
left++;
83+
}
84+
arr[right] = arr[left];
85+
}
86+
arr[left] = temp;
87+
console.log(arr)
88+
return left;
89+
}
90+
91+
arr = [3, 5, 6, 2, 1, 7, 4];
92+
console.log(quickSort(arr))
93+
5694
```
5795

5896
<!-- tabs:end -->

‎basic/sorting/SelectionSort/README.md‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,30 @@ public class SelectionSort {
4040

4141
```
4242

43+
### **JavaScript**
44+
45+
```javascript
46+
function selectionSort(inputArr) {
47+
let len = inputArr.length;
48+
for (let i = 0; i <= len - 2; i++) {
49+
let j = i;
50+
let min = j;
51+
while (j <= len - 1) {
52+
if (inputArr[j] < inputArr[min])
53+
min = j;
54+
j++;
55+
}
56+
let temp = inputArr[i];
57+
inputArr[i] = inputArr[min];
58+
inputArr[min] = temp;
59+
}
60+
return inputArr;
61+
}
62+
63+
let arr = [6, 3, 2, 1, 5];
64+
console.log(selectionSort(arr))
65+
```
66+
4367
<!-- tabs:end -->
4468

4569
## 算法分析
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
function selectionSort(inputArr) {
2+
let len = inputArr.length;
3+
for (let i = 0; i <= len - 2; i++) {
4+
let j = i;
5+
let min = j;
6+
while (j <= len - 1) {
7+
if (inputArr[j] < inputArr[min])
8+
min = j;
9+
j++;
10+
}
11+
let temp = inputArr[i];
12+
inputArr[i] = inputArr[min];
13+
inputArr[min] = temp;
14+
}
15+
return inputArr;
16+
}
17+
18+
let arr = [6, 3, 2, 1, 5];
19+
console.log(selectionSort(arr))

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /