선택정렬(selection_sort)

hh·2022년 7월 26일
0

Algorithm

목록 보기
1/4
post-thumbnail
선택정렬 : 정렬이 되어있지 않은 숫자들 중에서 최소값을 선택하여 배열의 첫번째 요소와 교환하는 것

정렬은 물건을 크기순으로 오름차순이나 내림차순으로 나열하는 것인데, 컴퓨터공학 분야에서 가장 기본적이고 중요한 알고리즘 중 하나!
자료 탐색에서 필수적이라 정확하게 이해하는 게 중요해 보임


그림


코드

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define SIZE 10

void makeArray(int A[]){ // 배열 만드는 함수
	srand(time(NULL));
    for(int i = 0; i < SIZE; i++)
    	A[i] = rand() % 100; // 중복 제거 안 함
}

void printArray(int A[]){ // 배열 출력 함수
    for(int i = 0; i < SIZE; i++)
        printf("[%d] ", A[i]);
    printf("\n\n");
}

void selection_sort(int A[], int n){ // 선택정렬
    int least, temp;
    for(int i = 0; i < n - 1; i++){ // 기준점 잡는 for문
        least = i; // 일단 least는 첫번째 인덱스라고 가정
        for(int j = i + 1; j < n; j++)
            if(A[j] < A[least])
                least = j; // 이때의 j값이 새로운 least 인덱스가 됨
            temp = A[i];
            A[i] = A[least];
            A[least] = temp;
    }
}

void main(){
    int list[SIZE]; // 배열 선언
    makeArray(list); // 난수로 배열 채우기
    printArray(list); // 정렬되기 전
    getchar();
    selection_sort(list, SIZE);
    printArray(list); // 정렬된 후
}
profile
EWHA CSE 21

0개의 댓글

관련 채용 정보