Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
Yu Zhao committed May 12, 2018
1 parent da89a4a commit 036e896
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 0 deletions.
44 changes: 44 additions & 0 deletions ch05/ex8.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// find max in sorted rotated list
package main

import (
"fmt"
)

func main() {
// assume increasing array
// and members >= 3
arr1 := []int{9,0,1,2,3,5,6,7,8}
fmt.Println(findMax(arr1))
arr2 := []int{8,9,0,1,2,3,5,6,7}
fmt.Println(findMax(arr2))
arr3 := []int{1,2,3,5,6,7,8,9,0}
fmt.Println(findMax(arr3))
arr4 := []int{2,3,5,6,7,8,9,0,1}
fmt.Println(findMax(arr4))
}

func findMax(arr []int) (index int) {
start := 0
end := len(arr) - 1

for start < end {
index = (start + end) / 2
if end == start + 1 {
if arr[index] < arr[index + 1] {
index += 1
}
break
}
if arr[index - 1] < arr[index] && arr[index] > arr[index + 1] {
break
}

if arr[index] < arr[start] {// on second group
end = index - 1
} else { // on first group
start = index + 1
}
}
return
}
44 changes: 44 additions & 0 deletions ch05/ex9.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// find min in sorted rotated list
package main

import (
"fmt"
)

func main() {
// assume increasing array
// and members >= 3
arr1 := []int{9,0,1,2,3,5,6,7,8}
fmt.Println(findMin(arr1))
arr2 := []int{8,9,0,1,2,3,5,6,7}
fmt.Println(findMin(arr2))
arr3 := []int{1,2,3,5,6,7,8,9,0}
fmt.Println(findMin(arr3))
arr4 := []int{2,3,5,6,7,8,9,0,1}
fmt.Println(findMin(arr4))
}

func findMin(arr []int) (index int) {
start := 0
end := len(arr) - 1

for start < end {
index = (start + end) / 2
if start + 1 == end {
if arr[index] > arr[index + 1] {
index ++
}
break
}
if arr[index - 1] > arr[index] && arr[index] < arr[index + 1] {
break
}

if arr[index] > arr[end] { // on first group
start = index + 1
} else { // on second group
end = index - 1
}
}
return
}

0 comments on commit 036e896

Please sign in to comment.