ポインタを使ってクイックソートアルゴリズムを作成しようとしていますが、運があまりありません。私のコードはコンパイルされますが、うまくいきません。問題を解決する方法がわかりません。 ご協力いただければ幸いです。ポインタを使ったクイックソートアルゴリズム?
int* partition(int* start, int* stop) {
int* pivot = stop - 1; // you can randomly pick one as the pivot
int* i = start;
int* j = stop - 1;
for (;;) {
while (i < pivot && i < stop) ++i; // skip "low" on left side
while (j >= pivot && j > start) --j; // skip "high" on right side
if (*i >= *j) break;
swap(i, j); // swap out-of-place items
}
swap(*(stop - 1), *i); // swap pivot to the final place i
return i;
}
void quickSort(int* start, int* stop) {
if (stop - start <= 1) return;
int* pivot = partition(start, stop);
quickSort(start, pivot);
quickSort(pivot + 1, stop);
}
どのように機能しないのですか?あなたは何を期待しましたか、代わりに何を得ましたか?解決する問題を説明してください。 –
このプログラムは、アルゴリズムのタイプ、データセットのサイズ、およびデータセットのタイプを出力するためのものです。現在、他のソート関数でも動作しますが、この関数は何も返しません。 –
'int * pivot = stop-1;'どこにstopが定義されていますか? 'stop-1'が使用可能なアドレスであること、つまりソートされたすべての値が連続して格納されていることをどのように確認できますか? – Ayak973