[Algorithm] 선택정렬 (배열에 있는 정수값 내림차순 정렬하기)

저번 포스팅에서는 버블 정렬에 대해 알아보았는데요 이번 포스팅에서는 선택 정렬에 대해 한번 포스팅해보려 합니다. 버블 정렬이 뒤에서부터 차례대로 정렬하는 방법이라면 선택 정렬은 버블 정렬과는 반대로 앞에서부터 차례대로 정렬하는 방법입니다. 예제는 배열에 있는 정수 값을 내림차순으로 정렬하는 방법을 들고 왔습니다. 오름차순으로 바꾸려면 예제 문의 IF문의 부등호를 반대로 바꿔주시면 간단하게 구현 가능합니다.

 

선택 정렬 

선택 정렬은 배열 내의 기준이 되는 수(A[0]) 와 나머지의 수를 비교하여 오름차순일 경우 낮은 수, 내림차순일 경우 높은 수를 앞으로 보내는 방식입니다.

 

첫 번째 FOR문

선택정렬첫번째

위와같은 방법으로 첫번째 for문에서 기준값 [0]번째 Index의값과 나머지 값을 비교하여 가장 낮은수를 앞으로 보내줍니다.(오름차순기준)
 

두 번째 FOR문

선택정렬두번째

그 다음부터는 기준값을 [0]번째 Index에서 [1]번째 Index값으로 바꿔준 뒤 [0]번째에 있는 수를 제외한 나머지 숫자와 다시 비교를 합니다. 이 작업을 정렬이 완료될 때까지 반복하는 것이 선택 정렬입니다.

 

선택 정렬로 배열에 있는 정수 값 내림차순 정렬하기 (C언어/C++)

#define num 20
	
int number[num] = {15,3,23,64,77,46,42,174,68,78,91,5,76,310,84,342,176,120,33,41};
int temp;
for(int i = 0 ; i < num-1 ; i ++) {
    for(int j = i+1 ; j < num ; j ++) {
        if(number[i] < number[j]) {
            temp = number[j];
            number[j] = number[i];
            number[i] = temp;
       }
    }
}
         
for(int i = 0 ; i <  num ; i ++) {
      printf("[%d]",number[i]);
}

 

결과값

선택정렬 결과값

 

[C언어] 버블 정렬 (배열에 있는 정수 값 오름차순 정렬하기)

[C언어] 삽입 정렬 (배열에 있는 알파벳 차례대로 정렬하기)

[C언어] 병합 정렬 (실무에서 많이 쓰는 정렬방법)

[C언어] 퀵 정렬 (가장 빠르고 효율적인 정렬방법)

[C언어] 여러 가지 정렬 속도 비교(정렬의 시간 복잡도

 

댓글

Designed by JB FACTORY