2015-10-15 23 views
-2

排序數字數組我試圖在使用此功能findMinimumIndex for循環數組排序,但我似乎無法找到它不是正確排序。有什麼建議麼?函數本身工作正常,但是當我嘗試在循環中使用它時,它不起作用。有什麼建議麼?謝謝!如何在C

int findMinimumIndex(A[], int a, int b); //Finds smallest index of portion of array (A[i] ... A[j]) 

int main(){ 
    int A[5] = {4,6,7,4,3}; 
    int smallest_index; 
    for (int j = 0; j < count; j++){ 
     smallest_index = findMinimumIndex(A, j, 4); 
     printf("Sorted: %d\n", A[smallest_index]); 
    } 
} 

int findMinimumIndex(int A[], int a, int b){ 
    int smallest_value = A[a]; 
    int index = 0; 
    for (int k = a; k < j - 1; k++){ 
     if (A[k + 1] < smallest_value){ 
     smallest_value = A[k+1]; 
     index = k + 1; 
     } 
    } 
    return index; 

} 
+1

它不編譯! 'main()'中'count'是什麼? 'findMinimumIndex'中的'j'是什麼? –

+0

哎呀抱歉!忘記包含一些變量!謝謝! – programmer2222

+0

我看到我初始化smallest_value永遠是「新」數組的第一個指標,我該怎麼突破這個? – programmer2222

回答

2

如果您發現最小值及其索引,你應該切換值:

請看下面的例子:

你已經得到數組:

{4,6,7,4,3} 

起初,你會在索引4發現價值3,但你必須移動的最小值(開關與價值上j=0指數):

{3,6,7,4,4} 

然後你會在指數3找到4,然後,用j=1打開它:

{3,4,7,6,4} 

修改你的代碼:

for (int j = 0; j < count; j++){ 
    smallest_index = findMinimumIndex(A, j, 4); 
    int tmp = A[smallest_index]; 
    A[smallest_index] = A[j]; 
    A[j] = tmp; 
    printf("Sorted: %d\n", A[j]); 
} 

編輯:更正:

長度數組的是5:

smallest_index = findMinimumIndex(A, j, 5); 

和索引應設置爲a

int findMinimumIndex(int A[], int a, int b){ 
    int smallest_value = A[a]; 
    int index = a; 
    /* code */ 
} 
+0

有沒有辦法調用函數findMinimumIndex多次排序數組? – programmer2222

+0

是的,它和你的代碼一樣,唯一的是切換值。 @ programmer2222 – maskacovnik

+0

它似乎並沒有輸出正確的結果。 – programmer2222