私は簡単なコードを書いた。 bubbleSortはバブルソート関数(最小から最大)で、int intはサイズ5のint配列でこのコードをテストするために使用されます。C:配列へのポインタと破壊的な並べ替え
私はこれを破壊的にソートしたい単純にコピーを通過するだけではありません。私は見て見ましたが、これがどう動くべきかはまだ完全にはわかりません。私はここで何が欠けていますか?
#include <stdio.h>
void bubbleSort(int values[], int n);
int main(void) {
//set simple test array to make sure bubbleSort works
int arr[5] = {5,4,3,2,1};
//run it through function, and then print the now sorted array to make sure
bubbleSort(arr, 5);
printf("%i", arr);
return 0;
}
void bubbleSort(int values[], int n)
{
for (int i = 0; i < n; i++) {
for (int j = 0, hold = 0; j < n-i; j++) {
if (values[j] > values[j+1]) {
hold = values[j+1];
values[j+1] = values[j];
values[j] = hold;
}
}
}
return;
}
注:私のコードの残りの部分は、私のアマチュアコーディングの心に音に見えますが、私が改善することができるものでポインタを与えてください、より良い何をすることができ、など私は、ソートしかし、バブルのために再帰を使用して考えました私はまだそれを実装したいと思っているので、Cと同じくらい快適ではありません。しかし、あなたが示唆を持っているなら、私はそれらを読むことに満足しています。
ありがとうございました!
「インプレース並べ替え」より良い名前... –
'printfのだろう(「%i」は、ARR);'間違っている、あなたは、配列の要素を印刷する必要があります配列自体ではなく 'arr [0]'です。 –
'n-i'は正常ですが、最初のループは' i = 1'で始まります。 'i'が0の場合、内部ループは' for(j = 0; j
user3386109