2013-10-28 2 views
0

// 내가 실수로 만든 거품의 이상한 변형. [j]> a [j + 1]이 실수로 생략되었지만 코드가 여전히 완벽하게 작동 할 수 있다면 평소 생략했습니다. 이 종류의 거품 덩어리를 정상 거품 덩어리에 비해 사용하면 어떤 이점이 있습니까? 외부 루프의 첫 번째 반복의 끝에서, 배열의 첫 번째 값은 반드시 배열의 최소값 될 것이 버블 변형은 어떻게 효과적으로 정렬을 수행합니까?

public int[] bubbleSort(int[] a) 
{ 
    for (int i = 0; i < a.length - 1; i++) 
    { 
     for (int j = i + 1; j < a.length - 1; j++) 
     { 
      if (a[i] > a[j]) 
      { 
       int temp = a[i]; 
       a[i] = a[j]; 
       a[j] = temp; 

      } 
     } 
    } 
    return a; 
} 
+0

누락 된 줄은 어디에 속합니까? 색인 'k'가 표시되지 않습니다. –

+0

내가 뭔가를 놓친다면 알려줘. 'k + 1 '을'j'로 대체 했습니까? – JNL

+0

내 나쁜, k에 의하여 나는 의미했다 –

답변

3

고지 (당신은 왜 보는가?) 두 번째 반복 한 후, 두 번째 값이 두 번째로 작은 값이되고 세 번째 반복 후에 세 번째 값이 세 번째로 작은 값이됩니다.

(즉, 논리에 버그가 있다고 생각합니다. j의 상한선은 다음과 같아야합니다. 그렇지 않은 경우 배열의 마지막 값이 다른 것과 비교되거나 이동되지 않습니다.

selection sort을 살펴볼 수 있습니다. 배열의 가장 작은 값을 앞면으로 이동 한 다음 두 번째로 작은 것으로 이동하는 등의 작업을 수행 할 수 있습니다. 작성한 알고리즘은 (본질적으로) 선택 정렬의 수정 된 버전입니다 수정 된 버블 분류가 아닌

희망이 도움이됩니다.

+0

으로 바뀌 었습니다. 방금 화이트 보드의 알고리즘을 사용하여 선택 유형과 매우 유사하게 시작했습니다. 그리고 그 오류를 수정했습니다. 감사! –

관련 문제