#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
void GenerateRandomNumber(int *list, int n)
{
int count ;
int Data = 0;
int Data1 = 0;
int nCount = 0,compare_Data=0;
int *copylist = list;
int first = 0, end = 0;
srand(time(NULL));
first = clock();
for(count = 0;count<n;)
{
Data=rand();
Data1 = Data/(n+1);
if( Data1 == 0 && Data != 0)
{
for(nCount=0;nCount<=count;nCount++)
{
if(copylist[nCount] == Data)
{
compare_Data++;
break;
}
}
if(compare_Data == 0 )
{
copylist[count] = Data;
count++;
}
compare_Data = 0;
}
}
end = clock();
for(count = 0,copylist = list; count < (n/10); count++)
{
for(Data = 0; Data <10; Data++)
{
printf("%3d ",*copylist);
copylist++;
}
printf("\n");
}
printf("\n");
printf("%d", end-first);
}
int BinarySearch(int *list, int Count, int Key)
{
int nCount = 0;
int *copylist = list;
for(nCount=0;nCount<Count;nCount++)
{
if(copylist[nCount]==Key)
{
return copylist[nCount];
}
}
return -1;
}
int Compare(const void *arg1, const void *arg2)
{
return *(int*)arg1 - *(int*)arg2;
}
int main()
{
int *list = NULL;
int n = 0;
int Key = 0;
printf("n 입력 : ");
scanf_s("%d",&n);
list = (int *)malloc(sizeof(int)*n);
if(list == NULL)
{
printf("Memory Allocation Error!!\n");
exit(-1);
}
GenerateRandomNumber(list, n);
qsort(list,n,sizeof(int),Compare);
while(1)
{
printf("찾을 키값 입력 : ");
scanf_s("%d", &Key);
if(Key == -1)
{
break;
}
if(BinarySearch(list,n,Key) == -1)
{
printf("없음..\n");
}
else
{
printf("있음!!\n");
}
}
return 0;
}
여기서 제일중요한것은 서로 다른 숫자가 힙에 들어가야 되며 처음에 입력한 데이터 값 만큼
데이터 개수가 정해 졌다.
저도 여기서 다시 안 사실인데 랜덤 함수 테이블은 정해져있다라는 사실 이것은 프로그램을
실행 후 그 프로그램을 끄지 않고 다시 실행하면 똑같은 값들이 나온다는 사실이다.
그래서 srand(time(NULL))을 통해서 시간에 따라 이 테이블이 바뀌도록 해야한다.
'Soft Ware > C 언어!!' 카테고리의 다른 글
realloc을 이용한 원형 리스트 입니다 (0) | 2012.01.13 |
---|---|
퀵정렬 이해 및 소스 (0) | 2011.12.12 |
int main(int argc, char *argv[]) 에 대해서 (0) | 2011.12.12 |
realloc 의 의미와 사용방법 (1) | 2011.12.02 |
입력받는 문자열에서 숫자만 추출하기 (0) | 2011.12.01 |