2017-11-12 5 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.set(j+1, temp); 

list.get(j+1)를 사용해야 문제는 당신이

교환에 [1, 3, 3, 6, 6, 6, 8, 8, 45]

답변

1

입니다 의도적 인

,363,210

은 또한 당신의 명부가 완전히 정렬되지 않습니다

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

그 것이다 역 순서 배열의 약 절반 만 처리 (5,4,3,2,1 -> 2,1, 3,4,5)

대신 대신 1을 빼야한다 내가

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