summaryrefslogtreecommitdiff
path: root/sort/quick.go
diff options
context:
space:
mode:
authorPaul Buetow <pbuetow@mimecast.com>2020-08-08 16:24:56 +0100
committerPaul Buetow <pbuetow@mimecast.com>2020-08-08 16:24:56 +0100
commit9bee249738c6bbea23a3618bd487d8d046dd2fc4 (patch)
tree2189d706a25d18d69411964b55a3a6b938120709 /sort/quick.go
parentd5a41348086fd357f8f74ec55cf38d6236bf5366 (diff)
fix test
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