Skip to content

Commit b397dbd

Browse files
author
hero
committed
添加二分查询,与快速排序
1 parent ab371f4 commit b397dbd

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

other/binaryFind_test.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package main
2+
3+
import (
4+
"testing"
5+
)
6+
7+
func TestBinaryFind(t *testing.T) {
8+
var sortedArray []int = []int{1, 3, 4, 6, 7, 9, 10, 11, 13}
9+
t.Log(BinaryFind(sortedArray, 6))
10+
}
11+
12+
func BinaryFind(array []int, find int) (val int) {
13+
var (
14+
leaf = 0
15+
right = len(array)
16+
)
17+
for leaf <= right {
18+
mod := (leaf + right) / 2
19+
modVal := array[mod]
20+
if modVal > find {
21+
right = mod - 1
22+
} else if modVal < find {
23+
leaf = mod + 1
24+
} else {
25+
return mod
26+
}
27+
}
28+
return -1
29+
}

other/qsort_test.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package main
2+
3+
import "testing"
4+
5+
func Test_QSORT(t *testing.T) {
6+
a := []int{-1, 0, 1, 2, -1, -4}
7+
qsort(a)
8+
t.Log(a)
9+
}
10+
11+
func qsort(array []int) {
12+
if len(array) <= 1 {
13+
return
14+
}
15+
var (
16+
left = 0
17+
right = len(array) - 1
18+
)
19+
mod := array[0]
20+
for left < right {
21+
if mod > array[left+1] {
22+
array[left+1], array[left] = array[left], array[left+1]
23+
left++
24+
} else {
25+
array[left+1], array[right] = array[right], array[left+1]
26+
right--
27+
}
28+
}
29+
array[left] = mod
30+
qsort(array[:left])
31+
qsort(array[left+1:])
32+
}

0 commit comments

Comments
 (0)