2017-11-12 3 views
-3

私はバブルソートを使用してリストを注文しようとしていますが、ソート後の出力は恐ろしく間違っています。コードのどこかに問題があるようですが、私はあまり確信していません...自分自身が愚かであるかもしれません。JavaのためのBubbleSortアルゴリズム

public static void main(String[] args) { 

    List list = new ArrayList(); 
    list.add(1); 
    list.add(6); 
    list.add(3); 
    list.add(4); 
    list.add(45); 
    list.add(6); 
    list.add(234); 
    list.add(8); 
    list.add(9); 

    bubbleSort(list); 
    System.out.println(list); 
} 
public static void bubbleSort(List<Integer> list) { 

    int n = list.size(); 
    int temp = 0; 

    for (int i = 0; i < n-i; i++) { 
     for (int j = 0; j < (n - i - 1); j++) { 

      if (list.get(j) > list.get(j+1)) { 
       temp = list.get(j); 
       list.set(j,list.get(j+1)); 
       list.set(list.get(j+1), temp); 
      } 

     } 
    } 
} 

ことができます出力は問題があなたの

list.set(list.get(j+1), temp); 

を交換する代わりにlist.get(j+1)を使用して

list.set(j+1, temp); 

であるべきである[1, 3, 3, 6, 6, 6, 8, 8, 45]

答えて

1

であるあなたがいるよりも、別のインデックスを設定しています意図する


はまた、あなたのリストが完全にその配列(5,4,3,2,1命じ逆の約半分になるだけプロセス

for(int i = 0; i < n-i; i++) 

ソートされないことに注意してください - > 2,1を、 3,4,5)

代わりにあなたの代わりに私

for(int i = 0; i < n-1; i++) 
の1を引く必要があります
関連する問題