2016년 2월 20일 토요일

C언어 선택정렬 실습

배열을 정렬하는 방법은 여러가지가 있다.
그 중 선택 정렬이라는 것은 배열의 자리를 하나씩 비교하면서 자리를 바꾼다.
 오름차순으로 또는 내림차순으로 정렬하게 해주는 것이다.

우선 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");
}

이렇게 되면 사용자가 입력을 마음대로 정할 수도 있다.

댓글 없음:

댓글 쓰기