function swap(arr, xp, yp) { var temp = arr[xp]; arr[xp] = arr[yp]; arr[yp] = temp; } // An optimized version of Bubble Sort function bubbleSort( arr, n) { var i, j; for (i = 0; i < n-1; i++) // [~~~~~~~~~~,ㅣ] i === ~~~~~~~~~까지 { for (j = 0; j < n-i-1; j++) // j === { if (arr[j] > arr[j+1]) { swap(arr,j,j+1); } } } } /* Function to print an array */ function printArray(arr, size) { var i; for (i=0; i < size; i++) document.write(arr[i]+ " "); document.write("\n"); } // Driver program to test above functions var arr = [64, 34, 25, 12, 22, 11, 90]; var n = 7; document.write("UnSorted array: \n"); printArray(arr, n); bubbleSort(arr, n); document.write("Sorted array: \n"); printArray(arr, n);
버블 정렬은 순서가 잘못된 경우 인접 요소를 반복적으로 교체하여 작동하는 가장 간단한 정렬 알고리즘입니다.
첫 번째 패스: ( 5 1 4 2 8 ) –> ( 1 5 4 2 8 ), 여기에서 알고리즘은 처음 두 요소를 비교하고 5 > 1부터 교체합니다. ( 1 5 4 2 8 ) –> ( 1 4 5 2 8 ), 5 > 4 이후 스왑 ( 1 4 5 2 8 ) –> ( 1 4 2 5 8 ), 스왑 5 > 2 ( 1 4 2 5 8 ) –> ( 1 4 2 5 8 )), 이제 이러한 요소는 이미 순서가 지정되어 있으므로(8 > 5) 알고리즘은 요소를 교체하지 않습니다. 두 번째 패스: ( 1 4 2 5 8 ) –> ( 1 4 2 5 8 ) ( 1 4 2 5 8 ) –> ( 1 2 4 5 8 ), 스왑 4 > 2 ( 1 2 4 5 8 ) –> ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) –> ( 1 2 4 5 8 ) 이제 배열이 이미 정렬되었지만 알고리즘은 완료되었는지 알지 못합니다. 알고리즘 은 정렬되었는지 알기 위해 스왑 없이 하나의 전체 패스가 필요 합니다 . 세 번째 패스: ( 1 2 4 5 8 ) –> ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) –> ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) –> ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) –> ( 1 2 4 5 8 )