2013-10-23 168 views
-1

這裏的數組是我的代碼:指針使用功能

void bubbleSortInventory(article inventory[], int noOfArticles){ 
    int newn; 

    int check = 0; 

    while(check != 0){ 
     newn = 0; 
     for(int i = 1; i <= noOfArticles-1;i++){ 
      if(inventory[i-1].id>inventory[i].id){ 
       swap(&inventory[i-1].id,&inventory[i].id); 
       newn = i; 
      } 
     }//end for-loop 
     check = newn; 
    } 
} 

和交換功能:

void swap(int *number1, int *number2){ 
    int temporaryHolder; 

    temporaryHolder = *number1; 
    *number1 = *number2; 
    *number2 = temporaryHolder; 
} 

現在的問題,當我打印出數組庫存似乎並沒有被排序

任何人都知道我做錯了什麼?

解決了,感謝

+1

格式化你的代碼。大寫字母如「我」。不要忽略撇號。如果您花費更多時間正確發佈問題,人們會花更多時間查看自己的問題。 – dcaswell

+0

假設您修復了您的支票條件的初始值......您是否嘗試交換文章的ID或交換整個文章?交換函數簽名不應該是swap(article * article1,article * article2)'? – struthersneil

+0

@ludde如果答案解決了您的問題,請務必接受它(綠色複選標記)。 – dcaswell

回答

2

你的功能分配到0 ... check

int check = 0; 

...和以下條件check != 0 ...

while(check != 0) { 
    // ... 
} 

...這永遠不會通過這個條件。

while() {}循環將不會執行,所以它永遠不會修改傳入數組。

+0

謝謝,在這一個隧道視野,沒有注意到,現在完美。 – uzr