깨알 개념/Algorithm

선택 정렬 (Selection Sort)

interfacer_han 2023. 11. 2. 11:13

#1 알고리즘

#1-1

 

#1-2

 

#2 코드

#2-1 자바

public static void selectionSort(int[] array, int startIndex, int endIndex) {
    
    for(int maxIndex = endIndex; startIndex < maxIndex; maxIndex--) {
        
        // 배열을 순회하며 가장 값이 큰 원소의 index를 구한다
        int indexOfLargest = startIndex;
        for(int i = (startIndex + 1); i <= maxIndex; i++) {
            if(array[indexOfLargest] < array[i]) {
                indexOfLargest = i;
            }
        }
        
        // 가장 값이 컸던 원소와 맨 끝 index 원소의 값을 서로 교환한다
        int temp = array[maxIndex];
        array[maxIndex] = array[indexOfLargest];
        array[indexOfLargest] = temp;
    }
}

 

#2-2 코드 (코틀린)

fun selectionSort(array: Array<Int>, startIndex : Int, endIndex : Int) {

    for(maxIndex : Int in endIndex downTo (startIndex + 1)) {

        // 배열을 순회하며 가장 값이 큰 원소의 index를 구한다
        var indexOfLargest = startIndex;
        for(i : Int in (startIndex + 1)..maxIndex) {
            if(array[indexOfLargest] < array[i]) {
                indexOfLargest = i
            }
        }

        // 가장 값이 컸던 원소와 맨 끝 index 원소의 값을 서로 교환한다
        val temp = array[maxIndex]
        array[maxIndex] = array[indexOfLargest]
        array[indexOfLargest] = temp
    }
}

 

#3 요약

선택 정렬은 가장 큰 값 하나를 '선택'해서, 뒤쪽에 차곡차곡 쌓는 정렬이다.
 

#4 이 개념이 사용된 글

 

1181

#1 알고리즘 정렬 알고리즘은 여러 가지가 있다. 상황에 맞추어 가장 적절한 알고리즘을 골라야 하지만, 나는 알고리즘을 공부 중이므로 사용해 보지 않은 정렬 알고리즘 중에 아무거나 골라서

kenel.tistory.com

 

4153 - 직각삼각형

#1 알고리즘 선택 정렬 (Selection Sort) #1 알고리즘 #2 요약 (자바) public static void selectionSort(int[] array, int startIndex, int endIndex) { for(int maxIndex = endIndex; startIndex < maxIndex; maxIndex--) { // 배열을 순회하며 가

kenel.tistory.com

 

9076 - 점수 집계

#1 알고리즘 선택 정렬 (Selection Sort) #1 알고리즘 #2 요약 (자바) public static void selectionSort(int[] array, int startIndex, int endIndex) { for(int maxIndex = endIndex; startIndex < maxIndex; maxIndex--) { // 배열을 순회하며 가

kenel.tistory.com