你能幫我告訴我這有什麼問題嗎?爲什麼交換功能不起作用?交換數組函數的兩個元素
void swap(int a[], int b, int c) {
int temp = a[b];
a[b] = a[c];
a[b] = temp;
}
void bubble1 (int a[], int N){
int i;
for(i=0;i<N-1;i++){
if(a[i]>a[i+1]){
swap(a,i,i+1);
}
}
}
void main() {
int N = 11;
int a[12]={5,3,12,4,25,10,14,35,2,8,13};
bubble1 (a,N);
int i;
for(i = 0; i < N; i++){
printf("%d\n",a[i]);
}
}
如果我不使用交換功能,並在「泡泡」功能手動進行交換它的作品。但是,如果我使用交換,它不起作用,即使它完全相同。我在這裏做錯了什麼?
嘗試跨過'swap()'在一張紙上,你會很快看到問題。 –
不使用額外的變量作爲大小使用swap(int a [],size_t size),並通過#define ARRAY_LENGTH(a)(sizeof(a)/ sizeof(a [0]))計算您使用的數組的大小。一個是陣列 –