クイックソートプログラムでセグメンテーション違反がでるのですが
クイックソートのプログラムを作成したのですが、
実行するとセグメンテーション違反が発生して、上手くいきません。何処に原因があるのでしょうか?
また、セグメンテーションン違反とはどういったころなのでしょうか?
アドバイス宜しくお願いします。
#include <stdio.h>
int quick_sort(int *a,int start,int end);
int partition(int *a,int start,int end);
main()
{
int n;
int a[n];
int i;
printf("ソートしたい要素の個数は?\n");
scanf("%d",&n);
for(i=0;i<=n-1;i++) a[i]=0;
for(i=0;i<=n-1;i++){
printf("%dのデータを入力してください。\n",i+1);
scanf("%d",&a[i]);
}
printf("ソート前のデータは以下の通り\n");
for(i=0;i<=n-1;i++) printf("%d ",a[i]);
quick_sort(*a,1,n-1);
printf("ソート後のデータは以下の通り\n");
for(i=0;i<=n-1;i++) printf("%d ",a[i]);
}
int quick_sort(int *a,int start,int end)
{
int pivot;
if(end-start>0){
pivot=partition(a,start,end);
quick_sort(a,start,pivot-1);
quick_sort(a,pivot+1,end);
}
}
int partition(int *a,int start,int end)
{
int i,j,pivot,tmp;
i=start-1;
j=end;
pivot=a[end];
while(1){
while(a[++i]<pivot);
while(i<--j && a[j]>pivot);
if(i>=j) break;
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
a[end]=a[i];
a[i]=pivot;
return i;
}
お礼
色々恥ずかしい・・・ できました。皆さんありがとうございました。