Skip to content
This repository was archived by the owner on Sep 20, 2023. It is now read-only.

Commit d812cfe

Browse files
committed
912 finish
1 parent 156c84a commit d812cfe

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed
Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,30 @@
11
package problem0912
22

3-
import "sort"
4-
53
func sortArray(nums []int) []int {
6-
sort.Ints(nums)
4+
quick3way(nums, 0, len(nums)-1)
75
return nums
86
}
7+
8+
// 3 way quick sort
9+
func quick3way(nums []int, lo, hi int) {
10+
if lo >= hi {
11+
return
12+
}
13+
lt, i, gt := lo, lo+1, hi
14+
v := nums[lo]
15+
for i <= gt {
16+
switch {
17+
case nums[i] < v:
18+
nums[lt], nums[i] = nums[i], nums[lt]
19+
lt++
20+
i++
21+
case nums[i] > v:
22+
nums[i], nums[gt] = nums[gt], nums[i]
23+
gt--
24+
default:
25+
i++
26+
}
27+
}
28+
quick3way(nums, lo, lt-1)
29+
quick3way(nums, gt+1, hi)
30+
}

0 commit comments

Comments
 (0)