JosephCha의 개발일지

선택정렬 본문

알고리즘 및 자료구조

선택정렬

JosephCha 2021. 12. 8. 23:46

선택 정렬 (selection sort) 이란?

  • 다음과 같은 순서를 반복하며 정렬하는 알고리즘
    1. 주어진 데이터 중, 최소값을 찾음
    2. 해당 최소값을 데이터 맨 앞에 위치한 값과 교체함
    3. 맨 앞의 위치를 뺀 나머지 데이터를 동일한 방법으로 반복함
func SelectionSort(unSortedArray: [Int]) -> [Int] {
    var unSortedArray = unSortedArray
    for index in 0..<unSortedArray.count - 1 {
        var min = index // 기준점이 제일 작다고 가정하고 로직시작.
        for index2 in index+1..<unSortedArray.count {
            if unSortedArray[min] > unSortedArray[index2] {
                min = index2
            }
        }
        let temp = unSortedArray[index]
        unSortedArray[index] = unSortedArray[min]
        unSortedArray[min] = temp
    }
    return unSortedArray
}

 

index는 최소값이 들어갈 인덱스다. 일단 마지막에서 첫번째 인덱스까지만 최소값 비교 로직을 진행하면 된다. (첫번째 for문의 범위)

index로 부터 마지막 인덱스까지 최소값을 찾아 index에 최소값을 넣어주는 로직이 두번째 for문과 바로아래 swap하는 로직이다.

'알고리즘 및 자료구조' 카테고리의 다른 글

병합정렬  (0) 2022.04.20
동적 계획법(DP)  (0) 2022.02.24
삽입정렬  (0) 2021.12.08
버블정렬  (0) 2021.12.06
백준 알고리즘 (팩토리얼) No. 10872  (0) 2021.07.28
Comments