선택 정렬(Selection Sort)

hong·2022년 9월 24일
0

22 알고리즘

목록 보기
3/3
post-thumbnail

💡선택 정렬(Selection Sort)이란?

정렬 중간 과정에서 정렬된 데이터와 정렬되지 않은 데이터로 나누어져서,
정렬되지 않은 데이터에서 제일 작은 데이터를 검색하여 선택하고 정렬되지 않은 데이터의 제일 앞 숫자를 그 숫자와 교환함

👉 왼쪽(정렬된 데이터) 오른쪽(정렬되지 않은 데이터)

  • 오른쪽 데이터에서 제일 작은 데이터를 검색하여 선택
  • 오른쪽 데이터의 제일 앞 숫자를 선택한 숫자와 교환

✔️ 선택 정렬 구현

void swap(int* a, int* b){
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

void selectionSort(int array[], int n){
    int i, j, min_index;

    for(i=0; i<n; i++){
        min_index = i;  // 정렬되지 않은 데이터의 제일 앞 index
        for(j=i+1; j<n; j++){
            if(array[j] < array[min_index]){
                min_index = j;
            }
        }
        if(min_index != i) {
            swap(array[min_index], array[i]);
        }
    }
}

✔️ 특징

✔︎ Not Stable
✔︎ In-place

profile
🐶 ☕️ 🧳

0개의 댓글