Skip to content

Commit df22c27

Browse files
committed
add binary search
1 parent 0954c61 commit df22c27

File tree

3 files changed

+65
-0
lines changed

3 files changed

+65
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package newcode
2+
3+
import org.junit.Test
4+
5+
class LocalMinimum {
6+
fun min(array: IntArray): Int {
7+
if (array.isEmpty() || array.size < 2) return 0
8+
if (array[0] < array[1]) return 0
9+
if (array.last() < array[array.lastIndex - 1]) return array.lastIndex
10+
var pL = 0
11+
var pR = array.lastIndex
12+
while (pL < pR) {
13+
val mid = (pL + pR) / 2
14+
if (array[mid] > array[mid - 1]) {
15+
pR = mid
16+
} else if (array[mid] > array[mid + 1]) {
17+
pL = mid + 1
18+
} else {
19+
return mid
20+
}
21+
}
22+
return 0
23+
}
24+
25+
@Test
26+
fun test() {
27+
val array = intArrayOf(5535435, 45345, 5431, 64, 7, 6, 5, 52)
28+
println(this.min(array))
29+
}
30+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package search
2+
3+
object BinarySearch {
4+
fun search(array: IntArray, target: Int): Boolean {
5+
if (array.isEmpty()) return false
6+
var pL = 0
7+
var pR = array.lastIndex
8+
9+
while (pL < pR) {
10+
val mid = (pL + pR) / 2
11+
if (target < array[mid]) {
12+
pR = mid
13+
} else if (target > array[mid]) {
14+
pL = mid + 1
15+
} else {
16+
return true
17+
}
18+
}
19+
return false
20+
}
21+
}

src/main/kotlin/search/TestSearch.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package search
2+
3+
import org.junit.Assert
4+
import org.junit.Test
5+
6+
class TestSearch {
7+
private val array = intArrayOf(2, 2, 6, 6, 34, 34, 45, 45, 754, 3462)
8+
9+
@Test
10+
fun testBinary(){
11+
Assert.assertTrue(BinarySearch.search(array,6))
12+
Assert.assertFalse(BinarySearch.search(array,72))
13+
}
14+
}

0 commit comments

Comments
 (0)