컴퓨터+a/코딩테스트 연습

C언어 오름차순 정렬

hiiambk 2021. 2. 27. 18:31

C언어를 배울때 가장 기본으로, 자주 쓰이는 코드인데 오랜만에 보면 조금 헷갈릴 때가 있어서 정리해두기로.

 

아래 방법이 가장 단순한 방법

// A_len : 배열 길이, A : 배열 이름
int i, j, temp;
for(i=0; i<A_len; i++)
{
	for(j=i+1; j<A_len+1; j++)
    {
    	if(A[i] > A[j])
        {
        	temp = A[i];
            A[i] = A[j];
            A[j] = temp;
        }
    }
}

첫 번째 항목(기준)과 두 번째~A_len번째 항목을 순서대로 비교하여 첫 번째 항목보다 다른 항목이 크면 값을 바꿔주는 방법.

이 방법은 단순하지만 값을 여러번 바꾸는 단점이 있다.

 

그걸 해결해 줄 방법이 아래 방법

// A_len : 배열 길이, A : 배열 이름
int i, j, min, temp;
for(i=0; i<A_len; i++)
{
	min = i;
	for(j=i+1; j<A_len+1; j++)
    {
    	if(A[min] > A[j])
        {
        	min = j;
        }
    }
    if(min != i)
    {
    	temp = A[i];
        A[i] = A[min];
        A[min] = temp;
    }
}

이렇게 코딩하면, 순서를 매번 바꾸는 것이 아니라 각 요소의 값에 들어갈 위치를 기억해 뒀다가 한 번만 바꾸면 되므로 조금 더 효율적.

 

그런데 왜 코딩 라인이 안 맞을까.

 

C언어 코딩 연습을 하면서 깨닫는데 확실히 C언어보다는 JAVA로 많은 사람들이 공부하고 있다는 느낌이 든다.

검색해도 주로 JAVA 코드가 나오는 편.

JAVA 공부의 필요성을 더 느낀다.

728x90