Skip to content

Commit e0988a3

Browse files
authored
Add Binary Search in Kotlin (#4510)
1 parent 0704d92 commit e0988a3

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

archive/k/kotlin/BinarySearch.kt

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
fun main(args : Array<String>){
2+
if (args.size != 2) {
3+
println("Usage: please provide a list of sorted integers (\"1, 4, 5, 11, 12\") and the integer to find (\"11\")")
4+
return
5+
}
6+
7+
val listInput = args[0].replace(",", "")
8+
val targetInput = args[1]
9+
10+
val arr: IntArray
11+
val target: Int
12+
13+
try {
14+
arr = listInput.split(" ").map { it.toInt() }.toIntArray()
15+
target = targetInput.toInt()
16+
} catch (e: NumberFormatException) {
17+
println("Usage: please provide a list of sorted integers (\"1, 4, 5, 11, 12\") and the integer to find (\"11\")")
18+
return
19+
}
20+
21+
if (!isSorted(arr)) {
22+
println("Usage: please provide a list of sorted integers (\"1, 4, 5, 11, 12\") and the integer to find (\"11\")")
23+
return
24+
}
25+
26+
val result = binarySearch(arr, target)
27+
println(result)
28+
}
29+
30+
fun binarySearch(arr: IntArray, target: Int): Boolean{
31+
var left = 0;
32+
var right = arr.size - 1
33+
34+
while(left <= right){
35+
var mid = (left + right) / 2;
36+
if(arr[mid] == target){
37+
return true
38+
} else if(arr[mid] < target){
39+
left = mid + 1
40+
}else{
41+
right = mid - 1
42+
}
43+
}
44+
45+
return false
46+
}
47+
48+
49+
fun isSorted(arr: IntArray): Boolean {
50+
for (i in 0 until arr.size - 1) {
51+
if (arr[i] > arr[i + 1]) {
52+
return false
53+
}
54+
}
55+
return true
56+
}

0 commit comments

Comments
 (0)