私はすぐにクイックソートを実装しようとしていました。私は0でその「現在の」ステートメントを初期化する場合でも、私はそれを実行すると、画面に何も表示されない、クイックソートの反復
for (int current = 0; current <= high - 1; current++)
以下のループ部分でいくつかの問題を抱えています。次に、私は提供された実装のように '低い'引数に置き換えようとし、適切に実行されました。
質問したいのは、 'low'パラメータに割り当てられた値と同じ値だった0でループ文を初期化すると、なぜ機能しないのですか?私は0で新しい変数を初期化しようとし、ループにその変数を使用しますが、私は直接0ループステートメントを割り当てるときと同じ結果を与える。答えをありがとう。ここ
コード:
int partition(int arr[], int low, int high)
{
int pivot = arr[high];
int index = (low - 1);
for (int current = low; current <= high - 1; current++)
{
if (arr[current] <= pivot)
{
index++;
swap(arr[index], arr[current]);
}
}
swap(arr[index+1], arr[high]);
return (index + 1);
}
void quicksort(int arr[], int low, int high)
{
if (low < high)
{
int pi = partition(arr, low, high);
quicksort(arr, low, pi - 1);
quicksort(arr, pi + 1, high);
}
}
int main()
{
int arr[] = { 3, 4, 2, 5, 1 };
int n = sizeof(arr)/sizeof(arr[0]);
quicksort(arr, 0, n-1);
for (int i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
}
The result when i set the 'current' value with 0
再帰呼び出しが同じ配列を使用しますが、それの彼らの一部にのみ作動しなければなりません。 0から電流を開始すると、この部分の再帰呼び出し "agreement"に違反します。 –