2013-07-29 39 views
-2
void bubbleSort(int ar1[10], int logicalSize) 
{ 
    int tempHolder = 0; 
    for (int i = logicalSize; i >= 2; i--) 
    { 
     for(int i2 = 0; i2 < logicalSize-i2; i++) 
     { 
     if (ar1[i2 + 1] < ar1[i2]) 
     { 
      tempHolder = ar1[i2]; 
      ar1[i2] = ar1[i2 + 1]; 
      ar1[i2 + 1] = tempHolder; 
     } 

     } 
    } 
    cout << "The array in sorted order: " << endl; 
    for(int i2 = 0; i2 <= 10; i2++) 
    { 
     cout << ar1[i2] << endl; 
    } 
} 

int main() 
{ 
    int arry1[10]; 
    arry1[0] = 8; 
    arry1[1] = 56; 
    arry1[2] = 4; 
    arry1[3] = 25; 
    arry1[4] = 45; 
    arry1[5] = 92; 
    arry1[6] = 11; 
    arry1[7] = 1; 
    arry1[8] = 78; 
    arry1[9] = 66; 
    arry1[10] = 24; 

    cout << "The array in its original order: " << endl; 
    for (int i = 0; i <= 10; i++) 
    { 
     cout << arry1[i] << endl; 
    } 

    bubbleSort(arry1, 11); 

    cout << "The array in sorted order: " << endl; 
    for(int i2 = 0; i2 <= 10; i2++) 
    { 
     cout << arry1[i2] << endl; 
    } 


    return 0; 
} 

我似乎無法讓我的泡泡排序工作。代碼看起來很好,我的數組似乎設置正確。任何人都可以幫我解決這個問題嗎?我的循環在MT函數中設置不正確?或者是在循環內發生了什麼導致我的錯誤發生?我的Bubble Sort代碼有什麼問題?

+0

你能描述你正在得到什麼樣的錯誤嗎? –

+1

這個問題很荒謬。不要爲調試器使用stackoverflow。 – Zak

+0

試圖關閉作爲重複的[氣泡排序功能實現不工作](http://stackoverflow.com/questions/8221281/bubble-sort-function-implementation-not-working)... –

回答

1
  1. 你有緩衝區溢出(11元,而不是10)
  2. 您需要for(int i2 = 0; i2 < logicalSize-i2; i++)遞增I2,像這樣:for(int i2 = 0; i2 < logicalSize-i2; i2++)
  3. 你需要迭代,直到< 10<= 10
  4. bubbleSort(arry1, 11)應該bubbleSort(arry1, 10)
  5. 你可能希望你的for循環像(一個窮人版冒泡排序):

    for (int i = 0; i < logicalSize; i++) 
    { 
        for(int i2 = 0; i2 < logicalSize; i2++) 
        { 
        } 
    } 
    
+0

謝謝。那是一個簡單的錯誤。但是現在它實際上並沒有正確排序,並且它也增加了我的邏輯大小。任何想法如何解決這個問題? –

0

您申報10個成員的數組,所以你必須索引0到9.所以arry1[10]=24;溢出數組。您的bubbleSort函數中存在一些邏輯錯誤,這會使您的循環無限。

#include <iostream> 

using namespace std; 

void bubbleSort(int ar1[], int logicalSize) 
{ 
    int tempHolder = 0; //logical mistake , which makes your loop infinite 
    for (int i = 0; i < logicalSize; i++) 
    { 
     for(int i2 = 0; i2 < logicalSize-1; i2++) 
     { 
     if (ar1[i2 + 1] < ar1[i2]) 
     { 
      tempHolder = ar1[i2]; 
      ar1[i2] = ar1[i2 + 1]; 
      ar1[i2 + 1] = tempHolder; 
     } 

     } 
    } 
    cout << "The array in sorted order: " << endl; 
    for(int i2 = 0; i2 < 10; i2++) 
    { 
     cout << ar1[i2] << endl; 
    } 
} 

int main() 
{ 
    int arry1[10]; 
    arry1[0] = 8; 
    arry1[1] = 56; 
    arry1[2] = 4; 
    arry1[3] = 25; 
    arry1[4] = 45; 
    arry1[5] = 92; 
    arry1[6] = 11; 
    arry1[7] = 1; 
    arry1[8] = 78; 
    arry1[9] = 66; 
    // arry1[10] = 24; //array overflow 

    cout << "The array in its original order: " << endl; 
    for (int i = 0; i < 10; i++) 
    { 
     cout << arry1[i] << endl; 
    } 

    bubbleSort(arry1, 10); 

    cout << "The array in sorted order: " << endl; 
    for(int i2 = 0; i2 < 10; i2++) 
    { 
     cout << arry1[i2] << endl; 
    } 


    return 0; 
}