[Algorithm] 선택정렬 (배열에 있는 정수값 내림차순 정렬하기)
- ETC./Algorithm
- 2018. 4. 25.
저번 포스팅에서는 버블 정렬에 대해 알아보았는데요 이번 포스팅에서는 선택 정렬에 대해 한번 포스팅해보려 합니다. 버블 정렬이 뒤에서부터 차례대로 정렬하는 방법이라면 선택 정렬은 버블 정렬과는 반대로 앞에서부터 차례대로 정렬하는 방법입니다. 예제는 배열에 있는 정수 값을 내림차순으로 정렬하는 방법을 들고 왔습니다. 오름차순으로 바꾸려면 예제 문의 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언어] 버블 정렬 (배열에 있는 정수 값 오름차순 정렬하기)
'ETC. > Algorithm' 카테고리의 다른 글
[Algorithm] 퀵정렬 (빠르고 효율적인 정렬방법) (9) | 2018.05.07 |
---|---|
[Algorithm] 병합정렬 O(N*LogN) (0) | 2018.05.06 |
[Algorithm] 삽입정렬 (배열에 있는 알파벳 차례대로 정렬하기) (0) | 2018.04.27 |
[Algorithm] 버블정렬 (배열에 있는 정수값 오름차순 정렬하기) (2) | 2018.04.24 |