Skip to content

Commit f2917b7

Browse files
committed
rewrite quickSort
1 parent 98f1d58 commit f2917b7

File tree

2 files changed

+20
-19
lines changed

2 files changed

+20
-19
lines changed

Algorithm/Sort/Quick_Sort/main/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313

1414
func main() {
1515
testArray := []int{4, 2, 6, 7, 9, 5, 1, 3}
16-
//Quick_Sort.Quick_Sort_Recurse(testArray)
17-
Quick_Sort.Quick_Sort_Unrecurse(testArray)
16+
Quick_Sort.Quick_Sort_Recurse(testArray)
17+
//Quick_Sort.Quick_Sort_Unrecurse(testArray)
1818
fmt.Println(testArray)
1919
}

Algorithm/Sort/Quick_Sort/quick_sort_recurse.go

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,34 @@
66

77
package Quick_Sort
88

9-
func Quick_Sort_Recurse(nums []int) {
10-
left := 0
11-
right := len(nums) - 1
12-
sort(nums, left, right)
9+
func Quick_Sort_Recurse(nums []int) {
10+
quickSort(nums, 0, len(nums)-1)
1311
}
1412

15-
func sort(nums []int, left int, right int) {
13+
func quickSort(nums []int, left, right int) {
1614
if left < right {
17-
i := left
18-
j := right
15+
i, j := left, right
1916
flag := nums[left]
20-
17+
// 从右向左找第一个比 flag 小的数
2118
for i < j {
22-
// 从右向左找第一个比基数小的元素
23-
for i < j && nums[j] >= flag {
19+
if nums[j] >= flag {
2420
j --
21+
} else {
22+
break
2523
}
26-
nums[i] = nums[j]
27-
28-
// 从左向右找第一个比基数大的元素
29-
for i < j && nums[i] < flag {
24+
}
25+
nums[i] = nums[j]
26+
// 从左向右找第一个比 flag 大的数
27+
for i < j {
28+
if nums[i] < flag {
3029
i ++
30+
} else {
31+
break
3132
}
32-
nums[j] = nums[i]
3333
}
34+
nums[j] = nums[i]
3435
nums[i] = flag
35-
sort(nums, left, i-1)
36-
sort(nums, i+1, right)
36+
quickSort(nums, left, i-1)
37+
quickSort(nums, i+1, right)
3738
}
3839
}

0 commit comments

Comments
 (0)