[kotlin] 배열을 검색하여 특정 요소를 찾는 방법은?
1. 선형 검색
선형 검색은 배열의 처음부터 끝까지 요소를 하나씩 비교하여 원하는 요소를 찾는 방법입니다. 이 방법은 배열이 정렬되어 있지 않을 때 사용할 수 있습니다.
fun linearSearch(array: IntArray, target: Int): Int {
for (i in array.indices) {
if (array[i] == target) {
return i
}
}
return -1 // 요소를 찾지 못한 경우 -1 반환
}
val array = intArrayOf(2, 7, 5, 9, 1)
val target = 5
val result = linearSearch(array, target)
if (result != -1) {
println("$target은 배열에서 인덱스 $result에 있습니다.")
} else {
println("$target을 찾을 수 없습니다.")
}
2. 이진 검색
이진 검색은 배열이 정렬되어 있는 경우에 사용할 수 있는 효율적인 검색 방법입니다. 배열을 반으로 나누어 찾고자 하는 요소가 어느 반에 속하는지를 체크하여 범위를 좁혀가는 방식입니다.
fun binarySearch(array: IntArray, target: Int): Int {
var low = 0
var high = array.size - 1
while (low <= high) {
val mid = (low + high) / 2
when {
array[mid] == target -> return mid
array[mid] < target -> low = mid + 1
else -> high = mid - 1
}
}
return -1 // 요소를 찾지 못한 경우 -1 반환
}
val sortedArray = intArrayOf(1, 2, 5, 7, 9)
val target = 5
val result = binarySearch(sortedArray, target)
if (result != -1) {
println("$target은 배열에서 인덱스 $result에 있습니다.")
} else {
println("$target을 찾을 수 없습니다.")
}
위의 예제 코드는 Kotlin에서 배열 검색을 위한 선형 검색과 이진 검색 방법을 보여줍니다. 선택한 방법에 따라 배열에서 특정 요소를 검색할 수 있습니다. 검색 알고리즘의 시간 복잡도에 따라 성능이 달라질 수 있으므로 알고리즘을 선택할 때 이 점을 고려해야 합니다.