C語言的代碼,輪到排序出錯了。。。。
外邊寫的第一個函式用來交換數值
第二個是排序,
每輪以編號為兩端平均值的那項為基準,把它和陣列第一項交換然后遍歷該輪兩端比它小的項并依次交換到陣列左側。
最后把之前換完的第一項和最后一次交換來左側的那項(u[z])交換,讓作基準的項左邊都比它小,右邊項都大于它。
然后讓基準左邊部分和右邊分別再那么排,不停地排,直到排序完成。
拿個陣列試一下…
。。。。。。
這是什么玩意??
求助,哪里錯了


uj5u.com熱心網友回復:
把swap函式改成void swap(int *a, int *b) {
int v=*a; *a=*b; *b=v;
}
這種問題解釋的太多遍了,函式的形參和函式外的實參是不同方法堆疊的變數(也就是一個是qsort函式的變數,一個是swap函式的變數,作用域不一樣,毫不相關,只是值相同而已——實參的值賦值給形參),所以要想改變函式里的形參也能影響到不同作用域的函式外的變數,該怎么辦?很自然就想到了給它們建立關系。建立什么樣的關系呢?那讓函式內的形參指向函式外的實參,這就是指標的形式,所以形參要用指標。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/137648.html
標籤:新手樂園
下一篇:優化尋找完美數
