Skip to content

Commit 4885c12

Browse files
authored
Update 6.quickSort.md
1 parent f56cfad commit 4885c12

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

6.quickSort.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,44 @@ func swap(arr []int, i, j int) {
153153
}
154154
```
155155

156+
157+
// 改进
158+
159+
```go
160+
161+
162+
func quickSort(arr []int) []int {
163+
if len(arr) <= 1 {
164+
return arr
165+
}
166+
167+
// 随机选择一个位置作为基准
168+
pivotIndex := rand.Intn(len(arr))
169+
pivot := arr[pivotIndex]
170+
171+
// 将基准放到最后一个位置
172+
arr[pivotIndex], arr[len(arr)-1] = arr[len(arr)-1], arr[pivotIndex]
173+
174+
i := 0
175+
for j := 0; j < len(arr)-1; j++ {
176+
if arr[j] < pivot {
177+
arr[i], arr[j] = arr[j], arr[i]
178+
i++
179+
}
180+
}
181+
182+
// 将基准放到正确的位置
183+
arr[i], arr[len(arr)-1] = arr[len(arr)-1], arr[i]
184+
185+
left := quickSort(arr[:i])
186+
right := quickSort(arr[i+1:])
187+
188+
return append(append(left, arr[i]), right...)
189+
}
190+
191+
192+
193+
```
156194
## 6. C++版
157195

158196

0 commit comments

Comments
 (0)