알고리즘/여러가지

선택정렬 (Selection Sort)

고줭 2021. 4. 27. 18:15

선택정렬이란 배열에서 가장 작은 숫자를 맨 앞으로 보내는것이다.

#include <stdio.h>

int main(void) {
	int arr[10] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
    int i, j, temp, min, index;
    
    for(i=0; i<10; i++){
    	min = 100;	// 배열에 있는 가장 큰 수보다 더 크게만 하면 됨
        for(j=i; j<10; j++){
        	if(min > arr[j]){
            	min = arr[j];
                index = j;
            }
        }
        temp = arr[i];			// 스와핑
        arr[i] = arr[index];
        arr[index] = temp;
    }
    
    for(i=0; i<10; i++){
    	printf("%d ", arr[i]);
    }
    return 0;
}

가장 직관적이고 이해하기 쉽지만 시간복잡도는 N * (N + 1)/2 이며 O(N^2)라고 한다.

 

자바

public class SelectionSort {
    public static void main(String[] args) {
        int[] array = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
        int temp, i, j;
        int index=0;

        for(i=0; i<array.length; i++){
            int min=100;
            for(j=i; j<array.length; j++){
                if(min > array[j]){
                    min = array[j];
                    index = j;
                }
            }
            temp = array[i];
            array[i] = array[index];
            array[index] = temp;
        }
        for(i=0; i<array.length; i++){
            System.out.println(array[i]);
        }

    }
}

 

 

'알고리즘 > 여러가지' 카테고리의 다른 글

[백준] 2480 주사위 세개  (0) 2022.05.13
unordered_map VS map c++  (1) 2021.05.08
버블정렬 (Bubble Sort)  (0) 2021.04.27