퀵정렬 하다가 삽입정렬로 바꾸는거 질문입니다 ..
봉봉
질문 제목 : 퀵정렬 하다가 삽입정렬로 바꾸는거 질문이요.
질문 요약 :
책을보면서 한번 만들어봤는데요.
퀵정렬하다가 10개 차이나면 삽입정렬로 바꾸는건데요.. 맞는지 확인좀.. 해주세요 ..틀린부분 지적해주셨으면합니다 .ㅜ
조건:랜덤한값(1~100) 100개를 입력받아 퀵정렬로 하다가 10개 이상 순서를 옴겨야한다면 삽입정렬로 실행
질문 내용 :
#includestdio.h
#include stdlib.h
#include time.h #define size 100
#define max 100
#define swap(x,y,t) ((t)=(x), (x)=(y), (y)=(t))
int partition(int list[]int left, int right)
{
int pivot, temp;
int low,high;
low=left;
high=right+1;
pivot=list[left];
do{
do
low++;
while(low = right && list[low]pivot);
do
high--;
while(high = left && list[high]pivot);
if(lowhigh) swap(list[low],list[high],temp);
}
while(lowhigh);
swap(list[left],list[high],temp);
return high;
}
void quick_sort(int list[], int left, int right)
{
if(leftright){
int q=partition(list,left,right);
quick_sort(list,left,q-1);
quick_sort(list,q+1,right);
}
else if(left+10right){
int i,j,n,key;
for(i=1; in; i++){
key = list[i];
for(j=i-1; j-0 && list[j]key; j--)
list[j+1] =list[j];
list[j+1]= key;
}
}
}
int main()
{
int randnum[size];
int i;
srand(time(null));
for(i=0;isize;i++) {
randnum[i]=rand();
}
printf(\n정렬전: \n);
for(i=0;isize;i++) {
randnum[i] = rand()%max;
printf(%8d, randnum[i]);
}
quick_sort(randnum, 0, size-1);
printf(\n정렬후: \n);
for(i=0;isize;i++) {
printf(%8d, randnum[i]);
}
}