2. 선택 정렬 알고리즘이란
데이터의 처음부터 끝까지 훑어가며
가장 작은 값을 찾아
그 값을 첫 번째 자리부터 순서대로 자리를 바꾸며
정렬하는 알고리즘이다.
시간복잡도는 O(𝑁2) 이다.
100 68 25 1 15 72
Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99]
첫번째 값
3. 선택 정렬 알고리즘의 시간복잡도는 O(𝑁2
) 이다.
비교횟수는 𝑁2
/ 2 로 큰 편이지만
데이터 교환 횟수는 N번이면 충분하기 때문에
데이터의 수가 많은 경우에 유용한 알고리즘이다.
4. 주요 함수
1. void MakeRandomNumber(void)
2. int IsNumberExit(int number, int index)
3. void SelectionSort(void)
4. void DisplayBuffer(void)
5. 1. void MakeRandomNumber(void)
void MakeRandomNumber(void)
{
int i, Num;
i = 1;
srand((unsigned)time(NULL));
Buf[0] = 100;
while(i < MAX){
Num = rand() % MAX;
if(!IsNumberExit(Num, i)){
Buf[i] = Num;
i++;
}
}
}
전역변수인 정수형배열 Buf에
1부터 100까지의 값을
중복없이 무작위로 넣는다.
6. 1. void MakeRandomNumber(void)
void MakeRandomNumber(void)
{
int i, Num;
i = 1;
srand((unsigned)time(NULL));
Buf[0] = 100;
while(i < MAX){
Num = rand() % MAX;
if(!IsNumberExit(Num, i)){
Buf[i] = Num;
i++;
}
}
}
Num에 무작위로 값을 넣는다.
7. 1. void MakeRandomNumber(void)
void MakeRandomNumber(void)
{
int i, Num;
i = 1;
srand((unsigned)time(NULL));
Buf[0] = 100;
while(i < MAX){
Num = rand() % MAX;
if(!IsNumberExit(Num, i)){
Buf[i] = Num;
i++;
}
}
}
방금 대입한 Num의 값이 중복
인지를 확인하기 위해
IsNumberExit를 사용한다.
8. 1. void MakeRandomNumber(void)
void MakeRandomNumber(void)
{
int i, Num;
i = 1;
srand((unsigned)time(NULL));
Buf[0] = 100;
while(i < MAX){
Num = rand() % MAX;
if(!IsNumberExit(Num, i)){
Buf[i] = Num;
i++;
}
}
}
중복된 값이 없으면 Buff에 값
을 순서대로 넣는다.
9. 2. int IsNumberExit(int number, int index)
int IsNumberExit(int number, int index)
{
int i;
for(i=0;i<index;i++){
if(Buf[i] == number || number == 0)
return TRUE;
}
return FALSE;
}
Buf에 매개변수 number와 같
은 값이 있는지를 검사한다.
10. 2. int IsNumberExit(int number, int index)
int IsNumberExit(int number, int index)
{
int i;
for(i=0;i<index;i++){
if(Buf[i] == number || number == 0)
return TRUE;
}
return FALSE;
}
Buf의 인덱스값만큼 반복해서
Buf의 값이 numbe와 같거나 0
이면 TRUE를 반환한다.
같은 값이 없으면 FALSE를 반
환한다.
11. 3. void SelectionSort(void)
void SelectionSort(void)
{
int i, j, min, dummy;
for(i=0;i<MAX;i++){
min = i;
for(j=i+1;j<MAX;j++)
if(Buf[j] < Buf[min])
min = j;
dummy = Buf[min];
Buf[min] = Buf[i];
Buf[i] = dummy;
}
}
Buf의 값을 선택정렬한다.