본문으로 바로가기

C :: 오름차순과 내림차순

category Programing/C 2017. 3. 29. 22:45

나의 전환점이 되어야할 과제가 주어졌다.


1. 함수를 사용하는 이유

2. call by value, call by reference

3. 실습3

4. 과제 - 오름/내림차순 정렬


마지막 과제를 풀어보자 오름/내림차순 정렬이다.

정렬과 관련된 알고리즘은 검색하면 최적화된 코드가 많이나온다.

하지만 나는 실력향상을 위해서 보지 않고 했다. 그래서 시간도 오래걸렸고 코드가 효율적이지 못하다.

그래도 결국에는 인터넷에 나와있는 코드들에서 크게 벗어나지는 못하는것 같다.


아래는 내가 작성한 코드이다.


#include <stdio.h>


void func_e(int ine[]);

void func_d(int ind[]);


int i,j,k,box;


int main()

{

int input[10];

int choice;

printf("input : ");

for(i=0;i<10;i++)

{

scanf("%d",&input[i]);

}

printf("1 : 오름차순 정렬, 2 : 내림차순 정렬\n:");

scanf("%d",&choice);


switch(choice)

{

case 1:

func_e(input); break;

case 2:

func_d(input); break;

default:

printf("Err!"); return 0;

}

return 0;

}






void func_e(int ine[])

{

for(i=0;i<10;i++)

{

for(j=i+1;j<10;j++)

{

if(ine[i]>ine[j])

{

box = ine[j];

for(k=j;k>i;k--)

ine[k]=ine[k-1];

ine[i] = box;

}

}

}

for(i=0;i<10;i++)

printf("%d ",ine[i]);

printf("\n");

}



void func_d(int ind[])

{

for(i=0;i<10;i++)

{

    for(j=i+1;j<10;j++)

{

if(ind[i]<ind[j])

   {

           box = ind[j];

                for(k=j;k>i;k--)

ind[k]=ind[k-1];

                ind[i] = box;

            }   

}   

}   

for(i=0;i<10;i++)

printf("%d ",ind[i]);

printf("\n");

}