2013-04-13 28 views
1

Im不知道爲什麼我的代碼不會工作。他們都打印相同的值,而不是排序它們。 輸出不會改變,數組似乎仍然未排序。任何想法如何我可以解決這個問題?我想知道爲什麼。試圖理解我的氣泡最新錯誤排序方法

void BSort::BubbleSort() 
{ int temp =0; 
    for(int index = 0; index < sizes; index++){ 
     for(int index2 = 0; index2 < sizes-1; index2++){ 
      if(Array1[index2] > Array1[index2+1]){ 
       temp = Array1[index2]; 
       Array1[index2] = Array1[index2+1]; 
       Array1[index2+1] = temp;   } 
     } 
    } 


} 

/*************************************************************************/ 
//--------------------------- BubbleSort2() --------------------------// 
/*************************************************************************/ 


void BSort::BubbleSort2() 
{ 
    int temp =0; 
    for(int index = 0; index < sizes-1; index++){ 
     for(int index2 = sizes-1; index2 > index; index2--){ 
      if(Array2[index2] < Array2[index2-1]){ 
       temp = Array2[index2]; 
       Array2[index2] = Array2[index2-1]; 
       Array2[index2-1] = temp;   
     } 
     } 
    } 
} 

/*************************************************************************/ 
//----------------------------- CombSort() ---------------------------// 
/*************************************************************************/ 


void BSort::CombSort() { 
int temp = 0; 
int tempsize =sizes; 
int index2; 
while((tempsize = int(tempsize/1.3)) >1){ 
    for(int index = sizes-1; index >= tempsize; index--){ 
     index2 = index-tempsize; 
     if(Array3[index] < Array3[index2]){ 
      temp = Array3[index]; 
      Array3[index] = Array3[index2]; 
      Array3[index2] = temp; 
     } 
    } 
    bool testcase = true; 
    for(int in = 0; in < sizes; in++){ 
     for(int in2 =sizes-1,testcase = false; in2 > in; in2--){ 
      if(Array3[in2] < Array3[in2-1]) 
      { temp = Array3[in2]; 
       Array3[in2] = Array3[in2-1]; 
       Array3[in2-1] = temp; 
       testcase = true; 
      } 
     } 
    } 
} 



} 

主文件

#include<iostream> 



#include<cstdlib> 

#include "BSort.h" 
using namespace std; 


int main(void) 
{ 


     int a[] = {-2, 88, 6, -1, 10, 15, 3, 12, -11, 9, 33, 21, 4, 7, 45, 55, 62, 18, 0, 20}; 


     BSort S(a,20); 


     cout << endl << " Display Array elements before sorting"; 
     S.DisplayListElements(); 

     // Calling bubble sort 
     S.BubbleSort(); 
     S.BubbleSort2(); 
     S.CombSort(); 

     cout << endl << endl << " Display Array elements Increasing order After BubbleSort"; 
     S.DisplayListElements(); 



     system("pause"); 
     return 0; 
} 
+1

將代碼顯示爲如何調用'BubbleSort'函數? – deepmax

+1

即使假設你已經開始工作,泡泡排序仍然存在一個主要問題:泡泡排序。 –

+0

它是一個家庭作業任務。並且生病發布主文件。 – Stephen

回答

0

試試這個..每次迭代後,基本上你需要運行內環一個小於外部變量...主要是因爲它已經排序

void BSort::BubbleSort() 
{ int temp =0; 
    for(int index = 0; index < sizes; index++){ 
     for(int index2 = 0; index2 < sizes-index; index2++){ 
      if(Array1[index2] > Array1[index2+1]){ 
       temp = Array1[index2]; 
       Array1[index2] = Array1[index2+1]; 
       Array1[index2+1] = temp;   } 
     } 
    } 


} 
+0

非常感謝。 – Stephen