クイックソートを実装しましたが、このコードでセグメンテーション違反が発生しています。
#include<stdio.h>
#include<stdlib.h>
void Quick_Sort(int *a,int p,int r);
int partition(int *a,int p,int r);
int main(){
int testcase,num,search;
int i,j,*array;
scanf("%d",&testcase);
for(i=0;i<testcase;i++){
scanf("%d",&num);
array=malloc(sizeof(int)*num);
for(j=0;j<num;j++){
scanf("%d",(array+j));
}
Quick_Sort(array,0,num-1);
scanf("%d",&search);
/*for(j=0;j<num;j++){
if(search==*(array+j)){
printf("%d\n",j+1 );
break;
}
}*/
}
for(i=0;*(array+i)!='\0';++i){
printf("%d ",*(array+i));
}
}
void Quick_Sort(int *a,int p,int r){
int q;
if(p<r){
q=partition(a,p,r);
Quick_Sort(a,p,q);
Quick_Sort(a,q+1,r);
}
}
int partition(int *a,int p,int r){
int i,j,x,temp;
i=p-1;
j=r+1;
x=*(a+p);
while(1){
do{
j=j-1;
}
while(x<=(*(a+j)));
do{
i=i+1;
}
while(x>=(*(a+i)));
if(i<j){
temp=*(a+i);
*(a+i)=*(a+j);
*(a+j)=temp;
}else{
return j;
}
}