我寫了一段簡短的代碼。它有兩個功能:bubbleSort是一個氣泡排序功能(從小到大),「int main」用於測試這段代碼的大小爲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