quick Sort 마무리가 잘 안되요 ㅠㅠ
새솔
질문 제목 : quick sort 마무리가 잘 안되요 ㅠㅠ이렇게 처음 값이 똥값이 나오고 마지막 에 나와야할 가장 큰값이 안나오네요 ㅠㅠ
처음 줄은 난수 형성된거고 두번째 줄은 insertion sort로 나온거고
마지막 줄의 quick sort 저게 문제에요 ㅠㅠ 도와주세요 ㅠㅠㅠㅠ질문 내용 :
c++로 짜서 지금 돌리고 있어요 ,, 근데 자꾸....#include time.h
#include stdio.h
#include stdlib.h
int number=0;
int getn();
int** makerannums(int *rannum);
void insertions(int *rannum);
void quicks(int *rannum);
int main(void)
{
int *rannum=null,i=0;
int *rannum1,*rannum2,*rannum3;
number = getn();
rannum = &number;
rannum=*makerannums(rannum);
for(i=0;inumber;i++)
printf(%d\t,rannum[i]);
printf(\n);
rannum1=*makerannums(rannum);
insertions(rannum1);
rannum2=*makerannums(rannum);
quicks(rannum2);
rannum3=*makerannums(rannum);
//heaps(rannum3);
return 0;
}
void exequicksort(int *rannum,int left, int right)
{
int pivot,i,j,k,b,temp;
if(leftright)
{
pivot = rannum[left];
k=left;b=right+1;
do{
do
{
k++;
}while(rannum[k]pivot);
do
{
b--;
}while(rannum[b]pivot);
if(kb)
{
temp = rannum[k];
rannum[k]=rannum[b];
rannum[b] = temp;
}
}while(kb);
temp = rannum[b];
rannum[b] = rannum[left];
rannum[left] = temp;
exequicksort(rannum,left,b-1);
exequicksort(rannum,b+1,right);
}
}
void quicks(int *rannum)
{
int left=0,right=number,i,j;
exequicksort(rannum,left,right);
for(i=0;inumber;i++)
printf(%d\t,rannum[i]);
printf(\n);
}
void insertions(int *rannum)
{
int j=0,i = 0;
int temp = 0;
for(j=2;j=number;j++)
for(i=j-1 ; i=0 ; i--)
{
while(rannum[i]rannum[i-1])
{
temp = rannum[i];
rannum[i]=rannum[i-1];
rannum[i-1]=temp;
i--;
}
}
for(i=0;inumber;i++)
printf(%d\t,rannum[i]);
printf(\n);
}
int getn()
{
int n = 0;
while(!(1n)||!(1000000n))
{
printf(정렬하고자 하는 원소의 개수를 입력하세요.\n);
scanf(%d,&n);
if(!(1n)||!(1000000n))
printf(1부터 1000000사이의 수만 입력해 주세요. \n);
}
return n;
}
int** makerannums(int *rannum)
{
int k = 0,i=0;
srand(time(null));
rannum=(int*)malloc(sizeof(int)*number);
for(i=0;inumber;i++)
{
*(rannum+i) =(rand()%9999)+1;
}
return &rannum;
}