[정렬 알고리즘]
* 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;
}
}
}