[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언어] 여러가지 정렬 속도 비교(정렬의 시간복잡도


댓글(0)

Designed by JB FACTORY