我試圖在 c 中使用可變函式引數制作一個功能桶排序陣列,以便對每個桶進行排序,所以我試圖通過bubblesort演算法,但它似乎對每個桶都沒有做任何事情,我的問題是:什么我做錯了嗎?乍一看,我的代碼似乎沒有錯誤:(抱歉弄得一團糟)
void bubblesort (int arr[], unsigned char size) {
size /= sizeof(int);
for (unsigned char i = 0; i < size - 1; i )
for (unsigned char j = 0; j < size - i - 1; j )
if (arr[j] > arr[j 1])
arr[j] = arr[j] arr[j 1],
arr[j 1] = arr[j] - arr[j 1],
arr[j] = arr[j] - arr[j 1];
}
/* More sorting algorithms */
void bucketsort (int arr[], unsigned char size, unsigned char n, void sort(int[],unsigned char)) {
// to be fixed
size /= sizeof(int); int *bucket[n]; unsigned char s[n];
for (unsigned char i = 0; i < n; i ) s[i] = 0, bucket[i] = NULL;
int min = arr[0], max = arr[0];
for (unsigned char i = 1; i < size; i ) {
if (arr[i] < min) min = arr[i];
if (arr[i] > max) max = arr[i];
} for (unsigned char i = 0; i < size; i )
s[n*(arr[i]-min)/(max-min 1)] ,
bucket[n*(arr[i]-min)/(max-min 1)] = (int*)realloc(bucket[n*(arr[i]-min)/(max-min 1)],s[n*(arr[i]-min)/(max-min 1)]*sizeof(int)),
bucket[n*(arr[i]-min)/(max-min 1)][s[n*(arr[i]-min)/(max-min 1)]-1] = arr[i];
for (int i = 0; i < n; i ) {for (int j = 0; j < s[i]; j ) printf("%d ",bucket[i][j]); printf("\n");}
for (unsigned char i = 0; i < n; i ) sort(bucket[i],s[i]), fflush(NULL);
for (int i = 0, index = 0; i < n; i ) for (int j = 0; j < s[i]; j ) arr[index ] = bucket[i][j];
}
int main (void) {
int a[] = {3,6,4,9,1,7,5,8,2,0};
bucketsort(a,sizeof(a),4,bubblesort);
for (signed char i = 0; i < (signed char)(sizeof(a)/sizeof(int)); i ) printf("%d, ",a[i]);
}
在我的函式引數中,我嘗試用 * 替換[]但它沒有任何區別。
uj5u.com熱心網友回復:
您必須洗掉行“size /= sizeof(int)” - 并且大小正確
void bubblesort (int arr[], unsigned char size) {
// size /= sizeof(int);
for (unsigned char i = 0; i < size - 1; i )
for (unsigned char j = 0; j < size - i - 1; j )
if (arr[j] > arr[j 1])
arr[j] = arr[j] arr[j 1],
arr[j 1] = arr[j] - arr[j 1],
arr[j] = arr[j] - arr[j 1];
}
測驗:
1 2 0
3 4
6 7 5
9 8
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ~"[Thread 26424.0x564c exited with code 0]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/537607.html
標籤:C功能参数传递
上一篇:Python-按字母順序對字典鍵進行排序,同時按長度對值串列元素進行排序
下一篇:為調查分析中的模型撰寫R函式