..열심히 공부하세../C 입문

[정렬 알고리즘]

댄스댄스 2012. 5. 29. 18:06

* Sort 정렬
- 어느 키값을 기준으로 배치를 다시 하는 것 
- 오름차순 Ascending
   1--->10
   A---> Z
   a--->z
   ㄱ-->ㅎ
- 내림차순 Descending
- 소트의 종류 : Sellection, Bubble, Shell, Quick...

 

 


int su[5]={10,-5,20,7,8};

//문) 음수의 갯수를 구하시오
/*
if(su[0]<0)
if(su[1]<0)
if(su[2]<0)
if(su[3]<0)
if(su[4]<0)
*/

int cnt=0;
int idx;
for(idx=0; idx<=4; idx++)
{
   if(su[idx]<0) cnt++;
}

printf("%d\n",cnt);


//int su[5]={10,-5,20,7,8};

//문)su[1]번째의 등수를 구하시오

int rank=1;
for(idx=0; idx<=4; idx++)
{
   if(su[1]<su[idx]) rank=rank+1;
}


printf("%d\n",rank);


//성적프로그램

char name[5][10]={"무궁화","개나리","진달래","봉선화","라일락"};
int kor[5]={70,80,40,50,90};
int eng[5]={50,60,20,90,40};
int mat[5]={40,80,60,30,20};


//총점과 평균구하기
int tot[5], aver[5];
int idx;
for(idx=0; idx<=4; idx++)
{
   tot[idx]=kor[idx]+eng[idx]+mat[idx];
   aver[idx]=tot[idx]/3;
}


//출력하기
for(idx=0; idx<=4; idx++)
{
   printf("%s %d %d %d ",name[idx],kor[idx],eng[idx],mat[idx]);
   printf("%d %d\n",tot[idx],aver[idx]);

}


//평균을 기준으로 무궁화의 등수를 구하시오
/*
int rank=1;
for(idx=0; idx<=4; idx++)
{
   if(aver[0]<aver[idx]) rank=rank+1;
}

printf("%d\n",rank);
*/


//평균을 기준으로 반전체의 등수를 구하시오
int rank[5]={1,1,1,1,1}
int n;

for(idx=0; idx<=4; idx++)
{
    for(n=0; n<=4; n++)
    {
       if(aver[idx]<aver[n]) rank[idx]=rank[idx]+1;
    }
}

//출력하기
for(idx=0; idx<=4; idx++)
{
   printf("%s %d %d %d ",name[idx],kor[idx],eng[idx],mat[idx]);
   printf("%d %d ",tot[idx],aver[idx]);
   printf("%d",rank[idx]);

}


//1등과 5등의 평균점수 차이는 ?
int max,min;

for(idx=0; idx<=4; idx++)
{
   if(rank[idx]==1) max=aver[idx];
   if(rank[idx]==5) min=aver[idx];
}

printf("%d\n", max-min);

 

 


int su[5]={10,-5,20,7,8};

int idx;
for(idx=0; idx<=4; idx++)
{
   printf("%d ",su[idx]);
}

printf("\n");

//Sellection Sort
int p,q;
for(p=0; p<4; p++)
{
   for(q=p+1; q<=4; q++)
   {
       if(su[p]>su[q])
       {
           int temp;
           temp=su[p];
           su[p]=su[q];
           su[q]=temp;
       }
   }
}

 

 

//Bubble sort

for(p=3; p>=0; p--)
{
   for(q=0; q<=p; q++)
   {
       if(su[q]<su[q+1])
       {
           int temp;
           temp=su[q+1];
           su[q+1]=su[q];
           su[q]=temp;
       }
   }
}