Soft Ware/자료구조 및 알고리즘

정렬 !! -선택정렬-

달려가보자 2012. 4. 16. 06:34

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 100

void DynamicSort(int Data[],int nCount)
{
 int count = 0;
 int CmpData = 0;
 int count1 = 0;
 int ChaData = 0;

 for(count = 0; count <nCount; count++)   //처음 인덱스 0 부터 맥스 값 까지 정해놓고
 {
  for(count1 = count+1; count1<nCount; count1++)  // 비교하는 대상자들의 범위를 지정 여기서 +1 을 하는 이유는 기준값보다 인덱스값이 하나더 높아야 하기때문입니다.
  {
   if(Data[count]>Data[count1]) // 비교하고 스왑
   {
    ChaData = Data[count];
    Data[count] = Data[count1];
    Data[count1] = ChaData;
   }
  }
 }
}
int main()
{
 int i = 0;
 int Data[MAX] = {0,};

 srand(time(NULL));

 for(i=0; i<MAX; i++)
 {
  Data[i] = (rand()%10); // 배열에 랜덤으로 10미만 값들을 다 채워놓습니다
 }
 for(i=0; i <MAX; i++) printf("%2d",Data[i]); // 배열의 값들을 출력

 printf("\n");

 DynamicSort(Data,MAX);  // 선택정렬 함수

 for(i=0; i <MAX; i++) printf("%2d",Data[i]);  //정렬후 배열의 값 출력
 
 printf("\n");
}

/*
 선택 정렬은 기준값 하고 비교 값들을 비교하면서 기준값보다 작으면 스왑(체인지)을 해주고 끝까지 가면 이젠
 기준값을 바꿔주고 다시 한번 비교값들과 비교하면서 바꿔주는 방법입니다.
*/