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

Appearance settings

Commit 7dfc58a

Browse filesBrowse files
bonfyhustcc
authored andcommitted
增加了Go的实现(1-6) (hustcc#5)
* Add go code 1-6 * add 7&8
1 parent 937d26d commit 7dfc58a
Copy full SHA for 7dfc58a

File tree

Expand file treeCollapse file tree

9 files changed

+458
-1
lines changed
Filter options
Expand file treeCollapse file tree

9 files changed

+458
-1
lines changed

‎1.bubbleSort.md

Copy file name to clipboardExpand all lines: 1.bubbleSort.md
+16Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,19 @@ def bubbleSort(arr):
6161
arr[j], arr[j + 1] = arr[j + 1], arr[j]
6262
return arr
6363
```
64+
65+
## 7. Go 代码实现
66+
67+
```go
68+
func bubbleSort(arr []int) []int {
69+
length := len(arr)
70+
for i := 0; i < length; i++ {
71+
for j := 0; j < length-1-i; j++ {
72+
if arr[j] > arr[j+1] {
73+
arr[j], arr[j+1] = arr[j+1], arr[j]
74+
}
75+
}
76+
}
77+
return arr
78+
}
79+
```

‎2.selectionSort.md

Copy file name to clipboardExpand all lines: 2.selectionSort.md
+18Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,21 @@ def selectionSort(arr):
4848
arr[i], arr[j] = arr[j], arr[i]
4949
return arr
5050
```
51+
52+
## 5. Go 代码实现
53+
54+
```go
55+
func selectionSort(arr []int) []int {
56+
length := len(arr)
57+
for i := 0; i < length-1; i++ {
58+
min := i
59+
for j := i + 1; j < length; j++ {
60+
if arr[min] > arr[j] {
61+
min = j
62+
}
63+
}
64+
arr[i], arr[min] = arr[min], arr[i]
65+
}
66+
return arr
67+
}
68+
```

‎3.insertionSort.md

Copy file name to clipboardExpand all lines: 3.insertionSort.md
+16Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,19 @@ def insertionSort(arr):
4949
arr[preIndex+1] = current
5050
   return arr
5151
```
52+
53+
## 5. Go 代码实现
54+
```go
55+
func insertionSort(arr []int) []int {
56+
for i := range arr {
57+
preIndex := i - 1
58+
current := arr[i]
59+
for preIndex >= 0 && arr[preIndex] > current {
60+
arr[preIndex+1] = arr[preIndex]
61+
preIndex -= 1
62+
}
63+
arr[preIndex+1] = current
64+
}
65+
return arr
66+
}
67+
```

‎4.shellSort.md

Copy file name to clipboardExpand all lines: 4.shellSort.md
+25Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,28 @@ def shellSort(arr):
6262
return arr
6363
}
6464
```
65+
66+
## 4. Go 代码实现
67+
68+
```go
69+
func shellSort(arr []int) []int {
70+
length := len(arr)
71+
gap := 1
72+
for gap < gap/3 {
73+
gap = gap*3 + 1
74+
}
75+
for gap > 0 {
76+
for i := gap; i < length; i++ {
77+
temp := arr[i]
78+
j := i - gap
79+
for j >= 0 && arr[j] > temp {
80+
arr[j+gap] = arr[j]
81+
j -= gap
82+
}
83+
arr[j+gap] = temp
84+
}
85+
gap = gap / 3
86+
}
87+
return arr
88+
}
89+
```

‎5.mergeSort.md

Copy file name to clipboardExpand all lines: 5.mergeSort.md
+41-1Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
在《数据结构与算法 JavaScript 描述》中,作者给出了自下而上的迭代方法。但是对于递归法,作者却认为:
1010

1111
> However, it is not possible to do so in JavaScript, as the recursion goes too deep for the language to handle.
12-
>
12+
>
1313
> 然而,在 JavaScript 中这种方式不太可行,因为这个算法的递归深度对它来讲太深了。
1414
1515

@@ -96,3 +96,43 @@ def merge(left,right):
9696
result.append(right.pop(0));
9797
return result
9898
```
99+
100+
## 6. Go 代码实现
101+
102+
```go
103+
func mergeSort(arr []int) []int {
104+
length := len(arr)
105+
if length < 2 {
106+
return arr
107+
}
108+
middle := length / 2
109+
left := arr[0:middle]
110+
right := arr[middle:]
111+
return merge(mergeSort(left), mergeSort(right))
112+
}
113+
114+
func merge(left []int, right []int) []int {
115+
var result []int
116+
for len(left) != 0 && len(right) != 0 {
117+
if left[0] <= right[0] {
118+
result = append(result, left[0])
119+
left = left[1:]
120+
} else {
121+
result = append(result, right[0])
122+
right = right[1:]
123+
}
124+
}
125+
126+
for len(left) != 0 {
127+
result = append(result, left[0])
128+
left = left[1:]
129+
}
130+
131+
for len(right) != 0 {
132+
result = append(result, right[0])
133+
right = right[1:]
134+
}
135+
136+
return result
137+
}
138+
```

‎6.quickSort.md

Copy file name to clipboardExpand all lines: 6.quickSort.md
+35Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,38 @@ def partition(arr, left, right):
9292
def swap(arr, i, j):
9393
arr[i], arr[j] = arr[j], arr[i]
9494
```
95+
96+
## 5. Go 代码实现
97+
98+
```go
99+
func quickSort(arr []int) []int {
100+
return _quickSort(arr, 0, len(arr)-1)
101+
}
102+
103+
func _quickSort(arr []int, left, right int) []int {
104+
if left < right {
105+
partitionIndex := partition(arr, left, right)
106+
_quickSort(arr, left, partitionIndex-1)
107+
_quickSort(arr, partitionIndex+1, right)
108+
}
109+
return arr
110+
}
111+
112+
func partition(arr []int, left, right int) int {
113+
pivot := left
114+
index := pivot + 1
115+
116+
for i := index; i <= right; i++ {
117+
if arr[i] < arr[pivot] {
118+
swap(arr, i, index)
119+
index += 1
120+
}
121+
}
122+
swap(arr, pivot, index-1)
123+
return index - 1
124+
}
125+
126+
func swap(arr []int, i, j int) {
127+
arr[i], arr[j] = arr[j], arr[i]
128+
}
129+
```

‎7.heapSort.md

Copy file name to clipboardExpand all lines: 7.heapSort.md
+41Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,44 @@ def heapSort(arr):
106106
heapify(arr, 0)
107107
   return arr
108108
```
109+
110+
## 5. Go 代码实现
111+
112+
```go
113+
func heapSort(arr []int) []int {
114+
arrLen := len(arr)
115+
buildMaxHeap(arr, arrLen)
116+
for i := arrLen - 1; i >= 0; i-- {
117+
swap(arr, 0, i)
118+
arrLen -= 1
119+
heapify(arr, 0, arrLen)
120+
}
121+
return arr
122+
}
123+
124+
func buildMaxHeap(arr []int, arrLen int) {
125+
for i := arrLen / 2; i >= 0; i-- {
126+
heapify(arr, i, arrLen)
127+
}
128+
}
129+
130+
func heapify(arr []int, i, arrLen int) {
131+
left := 2*i + 1
132+
right := 2*i + 2
133+
largest := i
134+
if left < arrLen && arr[left] > arr[largest] {
135+
largest = left
136+
}
137+
if right < arrLen && arr[right] > arr[largest] {
138+
largest = right
139+
}
140+
if largest != i {
141+
swap(arr, i, largest)
142+
heapify(arr, largest, arrLen)
143+
}
144+
}
145+
146+
func swap(arr []int, i, j int) {
147+
arr[i], arr[j] = arr[j], arr[i]
148+
}
149+
```

‎8.countingSort.md

Copy file name to clipboardExpand all lines: 8.countingSort.md
+26Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,29 @@ def countingSort(arr, maxValue):
5454
bucket[j]-=1
5555
return arr
5656
```
57+
58+
## 4. Go 代码实现
59+
60+
```go
61+
func countingSort(arr []int, maxValue int) []int {
62+
bucketLen := maxValue + 1
63+
bucket := make([]int, bucketLen) // 初始为0的数组
64+
65+
sortedIndex := 0
66+
length := len(arr)
67+
68+
for i := 0; i < length; i++ {
69+
bucket[arr[i]] += 1
70+
}
71+
72+
for j := 0; j < bucketLen; j++ {
73+
for bucket[j] > 0 {
74+
arr[sortedIndex] = j
75+
sortedIndex += 1
76+
bucket[j] -= 1
77+
}
78+
}
79+
80+
return arr
81+
}
82+
```

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.