summaryrefslogtreecommitdiff
path: root/sort/quick.go
diff options
context:
space:
mode:
Diffstat (limited to 'sort/quick.go')
-rw-r--r--sort/quick.go12
1 files changed, 4 insertions, 8 deletions
diff --git a/sort/quick.go b/sort/quick.go
index 7222515..b6dd427 100644
--- a/sort/quick.go
+++ b/sort/quick.go
@@ -26,21 +26,17 @@ func quickPartition(a ds.ArrayList) int {
j := len(a) // Right scan index
hi := j - 1
+ // Median of first 3 elems is partitioning item
+ // This works because we randomly shuffled a in the beginning
Insertion(a[0:3])
a.Swap(0, 1)
v := a[0] // Partitioning item
for {
- for i++; a[i] < v; i++ {
- if i == hi {
- break
- }
+ for i++; a[i] < v && i < hi; i++ {
}
- for j--; v < a[j]; j-- {
- if j == 0 {
- break
- }
+ for j--; v < a[j] && j > 0; j-- {
}
// Check scan complete