배열을 정렬하는 방법은 여러가지가 있다.
그 중 선택 정렬이라는 것은 배열의 자리를 하나씩 비교하면서 자리를 바꾼다.
오름차순으로 또는 내림차순으로 정렬하게 해주는 것이다.
우선 4개를 정한 상태에서 실습이다.
#include<stdio.h>
int main()
{
int aa[4]={75,34,39,80};
int i,k,change;
printf("바뀌기전 %d %d %d %d \n",aa[0],aa[1],aa[2],aa[3]);
for(i=0;i<4;i++)
for(k=i+1;k<4;k++)
{
if(aa[i] > aa[k])
{
change = aa[i];
aa[i] = aa[k];
aa[k] = change;
}
}
printf("바뀐후 %d %d %d %d \n", aa[0],aa[1],aa[2],aa[3]);
}
이렇게 예를 들수 있다.
좀더 심화로 포인터와 동적메모리 함수를 이용한 예를 보겠다.
#include<stdio.h>
#include<malloc.h>
int main()
{
int *p;
int s;
int j,i,k,change;
printf("정렬할 숫자의 갯수를 입력하세요.:");
scanf_s("%d",&s);
p=(int*)malloc(4*s);
printf("정렬할 수를 입력하세요. :");
for(j=0;j<s;j++)
{
scanf("%d",&*(p+j));
}
printf("정렬전 :");
for(j=0;j<s;j++)
{
printf(" %d",*(p+j));
}
printf("\n");
for(i=0;i<s;i++)
for(k=i+1;k<s;k++)
{
if(*(p+i) > *(p+k))
{
change = *(p+i);
*(p+i) = *(p+k);
*(p+k) = change;
}
}
printf("정렬 후 :");
for(j=0;j<s;j++)
{
printf(" %d",*(p+j));
}
printf("\n");
}
이렇게 되면 사용자가 입력을 마음대로 정할 수도 있다.
댓글 없음:
댓글 쓰기