2014-08-30 38 views
0

問題是,當該數據是排序雙打像:選擇分類法,

數據:20,5,9,8%,7

的輸出是:

20, 5, 9, 8, 7 
    5, 20, 9, 8 ,7 
    5, 20, 9, 8 ,7 
    5, 20, 9, 8 ,7 
    5, 20, 9, 8 ,7 
    5, 9, 20, 8 ,7 
    5, 8, 20, 9 ,7 
    5, 7, 20, 8 ,7 
    5, 7, 9, 20 ,7 
    5, 7, 8, 20 ,7 
    5, 7, 8, 9 ,20 

5, 20,9,8,7部分正在重複4次,我該如何刪除它?

for(i=0; i<r; i++) 
{ 
    System.out.print(data[i]+"\t"); 
} 
    System.out.print("\n"); 
    for(i=0; i<size; i++) 
{ 
    smallest=i; 
    for(j=i+1; j<size; j++) 
    { 
     if(data[i] > data[j]) 
     { 
      temp = data[j]; 
      data[j] = data[smallest]; 
      data[smallest] = temp; 
     } 

      for(k=0; k<size; k++) 
      System.out.print(data[k]+"\t"); 
      System.out.print("\n"); 
     } 

    } 
+0

請張貼足夠的代碼爲我們重現該問題。 – 2014-08-30 13:51:08

+2

把你的for循環打印數組在內部'if(data [i]> data [j]) – 2014-08-30 13:52:13

+1

我想它試圖找出5是否小於9,8和7.你想要什麼輸出? – 2014-08-30 13:52:33

回答

0

5 20 9 8 7正在發生,因爲一旦您將5置於0點,則不需要再次交換。 5是數組中的最小項,所以它只需檢查數組中的其他元素即可確保。除去那些重複的唯一方法是改變排序方法

0

錯誤代碼顯示的數據:ü刪除循環對於k沒有循環對於j

for(i=0; i<r; i++) 
{ 
    System.out.print(data[i]+"\t"); 
} 
    System.out.print("\n"); 
    for(i=0; i<size; i++) 
{ 
    smallest=i; 
    for(j=i+1; j<size; j++) 
    { 
     if(data[i] > data[j]) 
     { 
      temp = data[j]; 
      data[j] = data[smallest]; 
      data[smallest] = temp; 
     } 
    } 
    for(k=0; k<size; k++) 
    { 
     System.out.print(data[k]+"\t"); 
     System.out.print("\n"); 
    } 
    }