#include<stdio.h>
#include <time.h>
#include <stdlib.h>
int w, q, p, r;
int tab[100];
void main ()
{
int i;
srand(time(0));
for (i = 0; i < 100; i += 1)
{
tab[i]=rand()%100;
}
display(tab);
r = 37;
quicksnort(tab, 0, r-1);
display(tab);
}
int display (int tab[])
{
int i;
printf("\n Your numbers : \n");
for (i = 0; i < 100; i += 1)
{
printf(" %d", tab[i]);
}
}
int quicksnort(int tab[], int m, int n)
{
if (p<r)
{
q = partition(tab, m, n);
quicksnort(tab, m, q-1);
quicksnort(tab, q+1, n);
}
}
int partition(int tab[], int p, int r)
{
int x, i, j, part;
x = tab[p];
i = p-1;
j = r+1;
do
{
do
{
j = j-1;
} while (tab[j]<=x && j>=0);
do
{
i = i+1;
} while (tab[i]>=x && i<=0);
if (i<j)
{
part = tab[i];
tab[i]=tab[j];
tab[j]=part;
}
else
{
return j;
}
} while (1);
}
こんにちは、上記のコードに問題があります。コンパイルはしますが、実行すると停止し、何らかの「コア ダンプ」のアラートが表示されます。これは、クイックソートのホア バージョンに基づいてい ます。Cでどのように機能するかわからないためだと思います。
(わかりました、それらがセルなどを指していることは知っていますが、ポインター付きのポインター、関数で使用されるポインター、または関数へのポインターのテーブルなどで迷子になっています。正直なところ、どこにあるのかわかりませんそれに関するより具体的な情報を得るために探します)
しかし、おそらく解決策はそれよりも簡単です。