개요
버블 분류는 간단한 분류 알고리즘입니다. 정렬 할 시퀀스를 반복적으로 방문하고 한 번에 두 가지 요소를 비교 한 다음 부정확 한 경우 교환합니다. 시퀀스를 방문하는 작업은 시퀀스가 분류 될 때까지 반복됩니다. 이 알고리즘의 기원은 요소가 더 작을수록 Exchange를 통해 서열의 시작 부분에 천천히 "플로트"되기 때문입니다.
간단히 말해서, 그것은 다음과 같습니다.
버블 분류는 배열 뒤에 가라 앉는 더 큰 문자 이상이며 (아래와 같이 이해 될 수 있음), 작은 문자는 앞쪽 (위)에 떠 다니고 있습니다.
직관적 인 해석 다이어그램 :
단계
인접한 요소를 비교하십시오. 첫 번째 것이 두 번째 것보다 크면 두 가지를 교환하십시오.
첫 번째 쌍에서 마지막 쌍으로 시작하여 각각의 인접 요소 쌍에 대해 동일한 작업을 수행하십시오. 이 시점에서 마지막 요소는 가장 큰 숫자 여야합니다.
마지막 요소를 제외한 모든 요소에 대해 위의 단계를 반복하십시오.
비교해야 할 숫자 쌍이 없을 때마다 매번 더 적고 적은 요소에 대해 위의 단계를 계속 반복하십시오.
예
원시 데이터 :
3 5 2 6 2
첫 번째 라운드
3 및 5, 5는 3보다 크고 교환 3 5 2 6 2 비교를 계속 비교하십시오. 5, 5, 5는 2, 교환 위치 3 2 5 6 2 비교 5와 6, 6은 5보다 크고, 교환 3 2 5 6 2 비교 3 2 5 6은 각각 2보다 크고, 교환 위치 3 2 5 2 66 싱크는 각각 2 개의 상승 (전면)을 비교합니다.
라운드 2
비교 3 및 2, 3은 2보다 크고, 교환 위치 2 3 5 2 6 비교 3 및 5, 5는 3보다 크고, 교환 없음 2 3 5 2 6 비교 5 및 2, 5는 2보다 크고 교환 위치 2 3 2 5 6 비교 5와 6 비교 필요 없음
세 번째 라운드
비교 2 및 3, 3은 2보다 크며 교환 할 필요가 없습니다 2 3 2 5 6 비교 3 및 2, 3은 2보다 크며 교환 위치를 비교할 필요가 없습니다. 2 2 3 5 6
4 라운드
교환없이 2와 2를 비교하십시오 2 2 3 5 6
4 라운드 끝
2 2 3 5 6
코드 구현 (Java)
package com.coder4j.main.arithmetic.sorting; public class bubble { / ** * bubble sort * * @param array * @return * / public static int [] sort (int [] array) {int temp; // 첫 번째 레이어 루프는 길이 요소와 같은 비교 된 라운드 수를 보여 주며, 비교 된 라운드 수는 길이 -1 (int i = 0; i <array.length -1; i ++) {System.out.println ( "스레드" + (i + 1) + "휠 시작")입니다. // 루프의 두 번째 레이어, 각각의 인접한 두 비교는 한 번 감소하고 라운드 수가 증가함에 따라 횟수는 감소합니다. 각 라운드는 가장 큰 것을 결정하며 (int j = 0; j <array.length -1 -i; j ++) {if (array [j+1] <array [j]) {temp = array [j]; 배열 [j] = 배열 [j + 1]; 배열 [j + 1] = 온도; } system.out.println ( "th" + (i + 1) + "round,"th " + (j + 1) +"compar : "); for (int k : array) {system.out.print (k +" ";} system.out.println ();} system.out.println ("result : "); system.println ()} 공개 정적 무효;출력 테스트 결과 :
2 3 5 6 6 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 4 3 3 5 6 4 4 4 4 4 4 5 6 4 4 4 4 4 4 4 5 6 4 4 4 4 4 4 4 4 4 4 5 6 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 최종 결과 2 2 3 5 6
테스트 후 예제의 결과와 일치합니다.