私はソートを学んでいます(初めてではありません)。バブルソートでは、コードとして以下を持っています。
int bubble_sort(int *arr, size_t n) {
size_t i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return 0;
}
ご覧のとおり、内側のループにはn-1
(for ループ内で) 時間があり、これは理解できます (a[i],a[i-1]
どちらも 1 回の反復に含まれます)。ただし、外側のループには がありますがi < n
、i < n-1
しかし、インターネットでのほとんどの実装には n
、外側のループ値があります。外側のループを実行n-1
すると、最悪の場合でも問題なく動作し5 4 3 2 1
ます。n-1
外部ループの時間で機能しない入力のセットがあるかどうか疑問に思っています。ある場合は、投稿して説明してください。ありがとう。