기타지식들/알고리즘

숫자 내림차순,오름차순 정렬하는 알고리즘

원원 2021. 1. 16. 21:19

안녕하세요 . 오늘은 숫자 내림치순, 오름차순으로 정렬하는 알고리즘을 알아보겠습니다 .



오름차순 정렬로 한다고 치고, 숫자 3개 A,B,C가 있습니다


첫 번째 숫자와 두 번째 세 번째 숫자를 비교한다음에 첫번째숫자가 더 크면 위치를 바꿉니다

두 번째 숫자와 세 번째  숫자를 비교한 다음에 두 번째 숫자가 크면 세 번째 숫자와 위치를 바꿉니다



예시) 오름차순 정렬 5,2,1


스텝1)

5, 2와 비교함. 5가 더 크니 숫자를 바꿈 -> 2,5,1

2와 1을 비교함. 2가 더 크니 숫자를 바꿈 -> 1,5,2



스텝2)

5와 2를 비교함. 5가 더 크니 숫자를 바꿈 -> 1,2,5




오름차순 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<stdio.h>
#include<stdlib.h>
 
 
int main()
{
    int N,i,j,temp;
    scanf("%d",&N);
    int *num = (int*)malloc(sizeof(int)*N);
 
    
    
    
    for(i=0; i<N; i++)
        scanf("%d",&num[i]);
    
    printf("\n\n");
    
    for(i=0;i<N;i++)
    {
        for(j=i+1;j<N;j++)
        {            
            if(num[j]<num[i])
            {
                temp =num[i];
                num[i] = num[j];
                num[j] = temp;
            }
        }
    }
    
    for(i=0; i<N; i++)
        printf("%d\n",num[i]);
}
 
 

(내림차순이면 22번째줄의 부등호를 바꿔주면 됩니다.)



23번째줄에서 num[j] < num[i]를 비교합니다. i번째자리와 i+1번째, i+2번째.....자리를 비교한다는 의미입니다.