개발새발/정렬

[Kotlin] 선형 검색 - Linear Search

조희우 2023. 8. 14. 13:50

🔷 선형 검색 (Linear Search)란?

[이미지 출처]https://www.programmingsimplified.com/c/source-code/c-program-linear-search

    선형 검색(Linear Search) 혹은 순차 검색(Sequential Search)이라고 불린다.

    이름과 같이 데이터의 집합을 처음부터 끝까지 순서대로 비교하여 값을 검색한다.


🔷 선형 검색의 장점

🔹비정렬

    선형 검색은 값을 하나하나 비교하는 방식이므로 데이터가 정렬되지 않은 상태에서도 사용이 가능하다.
    정보없이 데이터를 찾아야하는 경우에도 유용하게 사용이 가능하다.

🔹쉬운 난이도

    데이터를 정렬, 수정할 필요가 없기 때문에 난이도가 쉽다.


🔷 선형 검색의 단점

🔹비효율

    방대한 양의 데이터가 있을 경우, 값이 마지막에 위치하거나 존재하지 않는 최악의 경우에 모든 데이터를 확인한다.
    데이터의 양이 많아질 수록 검색 시간이 비례하여 늘어난다.


🔷 시간 복잡도

🔹최악의 경우 :  O(n)

    n개를 입력했을 때, 최악의 경우 n번이 실행된다.

🔹최선의 경우 :  Ω(1)

    n개를 입력했을 때, 최선의 경우 1번이 실행된다.


🔷 구현

🔹코틀린 (Kotlin)

fun main() {
	// 리스트 생성
    val mutableList = mutableListOf<Int>(1, 2, 3, 4, 5, 6)

	// 리스트 내부 반복
    for (i in 0 until mutableList.size){
    	// 데이터 검색 : 2
        if(mutableList[i] == 2){
        	// 데이터 검색 성공 & 출력
            println("found ${mutableList[i]}, Index of ${mutableList[i]} is $i")
            return
        }
    }
    
    // 데이터 검색 실패
    println("not found")
}