정렬 : 배열응용
. 기준 인덱스(0~)의 변수부터 나머지와 값 비교
. 최대값을 찾아서 값 교환
. 기준 인덱스 증가
. 반복하며 내림차순 정렬 진행
. 흐름
{5, 6, 8, 1, 3} // max = 8
{8, 6, 5, 1, 3} // max = 6
{8, 6, 5, 1, 3} // max = 5
{8, 6, 5, 3, 1} // max = 3
{8, 6, 5, 3, 1} // max = 1
srand(time(0));
int score[5] = {0};
for(int i=0; i<5; i++){
score[i] = rand() % 90 +11;
printf("%d ", score[i]);
}
printf("\n");
더보기
단계1 )
// 정렬 : 배열응용
// 내림차순 혹은 오름차순으로 배치하는 것
// 내림차순으로 정렬 : {98 80 54 48 16}
// max값과 index를 활용해서 정렬가능 (<-> min값 index)
int scores[5] = {55, 48, 16, 98, 80};
for(int i=0; i<5; i++){
int max = scores[i]; // 기준
int idx = i; // 기준
for(int j=i; j<5; j++){
if(max < scores[j]){
max = scores[j]; // 기억
idx = j; // 기억
}
}
// 값 교체 : max가 j인덱스에 존재했을 때
int temp = scores[i];
scores[i] = scores[idx];
scores[idx] = temp;
}
// print
for(int i=0; i<5; i++){
printf("%d ", scores[i]);
}
printf("\n");
단계2 )
for(int i=0; i<5; i++){
for(int j=i; j<5; j++){
if(score[i] < score[j]){
int temp = score[i];
score[i] = score[j];
score[j] = temp;
}
}
}
// print
for(int i=0; i<5; i++){
printf("%d ", score[i]);
}
printf("\n");
'C > ☞' 카테고리의 다른 글
[42] 포인터 기본 (0) | 2020.07.23 |
---|---|
[41] 셔플 (0) | 2020.07.23 |
[39]-A. 회원가입 (0) | 2020.07.23 |
[39] 회원가입 (0) | 2020.07.23 |
[37] 연습문제 : 2차원 배열 (0) | 2020.07.23 |
댓글