버블 정렬.

원리는 두 개의 인접한 소자의 과거 값과 오른쪽의 큰 요소를 비교한다.

생각 순차적으로 인접한 두개의 수를 비교하여 상기 번호 뒤에 다수 앞서 배치된다. 즉, 첫 번째 통과 : 첫째, 비교기 및 제 번호, 다수의 방출 후에 전에 소수점. 그런 다음, 두 번째 숫자와 세 번째 숫자, 전 많은 수의 방출 후 소수점을 비교 마지막 두 숫자는 비교 할 때까지 너무 많은 수의 릴리스 이후, 소수점 이하 전에, 계속됩니다. 모든 종류의 때까지 여행 단계를 반복이 완료됩니다.

비교의 제 1 패스가 완료되면 마지막 숫자는 어레이의 수의 최대 수 있어야하므로 상기 제 여행 마지막 번호는 비교에서 포함되지 않은 비교하면;

비교, 끝에서 두 번째 번호의 두 번째 패스를 완료 한 후, 배열에서 두 번째로 큰 수, 그래서 비교에 참여하지 않는 마지막 두 숫자를 비교하는 세 번째 여행을해야합니다;

등등, 비교 (1)의 각 패스 번호;

......

어레이 정렬 : 예를 들어 값 int [] = {6,3,8,2,9,1 도착};   

첫 번째 여행 정렬 :

    제 정렬 6 및 비교 3, 6, 3 전환 위치보다 크다 : 368,291

    이하 6~8없이 교체 위치에 비해 6, 8 : 제 368,291 정렬

    셋째 정렬 8 및 비교 2 8은 교체 위치 (2)보다 크다 : 362,891

    넷째 정렬 8 9 8 9 미만, 더 스위칭 위치를 비교 없음 362891

    다섯째 정렬 9 및 비교 1 : 1보다 큰 9 스위칭 위치 : 362,819

    다섯 번 비교 분류 결과의 첫 번째 패스 총 : 362,819

-------------------------------------------------- -------------------

두 번째 여행 정렬 :

    첫 번째 종류 : 3, 6 위치를 교환하지 미만 3 6 비교 : 362819

    정렬 제 6 비교 2 개 이상의 2~6 교환 위치 : 326,819

    셋째 분류 : 비교 6, 8, 6 이상 8, 과거 위치 : 326,819

    넷째 정렬 8 및 비교 1, 8, 1 전환 위치보다 크다 : 326,189

    4초 패스 비교 총 분류 결과 326,189

-------------------------------------------------- -------------------

세 번째 여행 정렬 :

    제 정렬 3과 비교하여 2, 3, 교환 위치 (2)보다 크다 : 236,189

    두 번째 종류 : 3, 6 위치를 교환하지 미만 3 6 비교 : 236189

    셋째 정렬 6 및 비교 1, 6, 1 전환 위치보다 크다 : 231,689

    정렬 결과와 비교하여 총 3 회 번째 패스 : 231,689

-------------------------------------------------- -------------------

넷째 여행 정렬 :

    제 정렬 : 2 및 3의 위치를 ​​변경하지 미만 3 비교 : 231,689

    정렬 제 3 비교 1, 3, 1 전환 위치보다 크다 : 213,689

    2초 패스 비교 총 분류 결과 213,689

-------------------------------------------------- -------------------

다섯 번째 여행 정렬 :

    제 정렬 1 및 비교 2 스위칭 위치 1보다 크다 : 123,689

    일초 패스 비교 총 분류 결과 123,689

-------------------------------------------------- -------------------

최종 결과 : 123,689

-------------------------------------------------- -------------------

따라서 : 정렬 N 번호 정렬 N-1 번, 총 완료 통과마다 일종의 내가 수 (NI) 회이고, 이는 이중 루프를 사용하는 것이 가능 횟수 외부 제어 루프, 각 내부 층의 제어 사이클의 수, 즉 시간,

코드를 복사
대해 INT (I = 1; I <arr.length; 내가 ++) { 

    대 (INT의 J = 1; J <arr.length-I, J ++) { 

    //交换位置

}    
코드를 복사

장점의 버블 정렬 : 모든 여행은 모든 종류의 훌륭한 가치를 찾을 수있는 여행이 될 것이기 때문에 비교가 덜 될 것입니다, 정렬 할 수 있습니다. 위의 예 : 특정 번호의 마지막 행에 비해 첫 번째 패스가 최대 수, 마지막 이외의 숫자의 수를 비교할 필요가 다른 사람의 사이에서, 정렬 번째 패스 후, 당신은 또한 최대를 찾을 수 있습니다 세 번째 여행을 비교할 때 다시 여러 번 행의 수는 두 번째 비교에 참여, 필요 매를 비교하기 위해 여행을 실시하지 않은, 즉 등등 ...... 마지막 두 숫자 이외의 추가로 수를 비교하고, 비교적 작은 여행은, 어느 정도까지, 알고리즘의 양을 감소시킨다.

 

 

 

 

/ * 
 * 거품 정렬 
 * / 
공용 Class 구성 거품 정렬 { 
  공공 정적 무효 메인 (문자열 []에 args) { 
    INT [] = {6,3,8,2,9,1} ARR; 
    에서 System.out.println ( "정렬 배열되기 전에 ") 
    (INT의 NUM 대해 {ARR) 
      System.out.print의 (NUM +" ") 
    } 
    .; I <-arr.length 1; I는 ++) {// 외부 루프 (I = 0에서 INT 패스 제어 시퀀스 번호 
      에 대한 (INT의 J = 0; J <arr.length-1-I, J ++) {// 내부 루프 컨트롤 매회 많은 종류의 
        경우 (도착 [J]> 도착 [J + 1]) { 
          INT의 ARR TEMP = [J] 
          ARR [J]를 ARR = [J + 1이다.]; 
          ARR [J + 1이다.] = TEMP; 
        } 
      } 
    } 
    에서 System.out.println () 
    에서 System.out.println ( "후 정렬 어레이는 : "); 
     (INT NUM의 경우 : ARR) {
       System.out.print (NUM + ""); 
     }
  } 
 }

추천

출처www.cnblogs.com/zxl934734463/p/10966558.html