버블 분류 : 대형에서 작거나 작은 것에서 큰 것에서 크게 배열로 요소를 배열하는 것입니다.
var array = [9,8,7,6,5,4,3,2,1];
첫 번째 라운드 비교 : 8,7,6,5,4,3,2,1,9 8 회 교체 i = 0 j = array.length-1-i
두 번째 라운드 비교 : 7,6,5,4,3,2,1,8,9 7 회 교체 i = 1 j = array.length-1-i
세 번째 라운드 비교 : 6,5,4,3,2,1,7,8,9 스왑 6 회 i = 2 j = array.length-1-i
네 번째 라운드 비교 : 5,4,3,2,1,6,7,8,9 5 회 교체 i = 3 J = array.length-1-i
다섯 번째 라운드 비교 : 4,3,2,1,5,6,7,8,9 4 배 i = 4 j = 배열 .length-1-i
여섯 번째 라운드 비교 : 3,2,1,4,5,6,7,8,9 3 배 i = 5 j = 배열 .length-1-i
7 번째 라운드 비교 : 2,1,3,4,5,6,7,8,9 2 배 I = 6 J = Array.Length-1-I
8 번째 라운드 비교 : 1,2,3,4,5,6,7,8,9 교체 1 시간 i = 7 J = array.length-1-i
코드 구현 :
var temp; var array = [9,8,7,6,5,4,3,3,2,1]; // 외부 루프 제어 라운드 수 (var i = 0; i <array.length-1; i ++) {// 내부 루프 제어 비교 시간 (var j = 0; 두 변수 temp = 배열 [j]; 배열 [j] = 배열 [j+1]; 배열 [j+1] = 온도; }}} console.log (배열);코드 최적화 :
var temp, bool, m = 0; var array = [9,8,7,6,5,4,3,2,1]; for (var i = 0; i <array.length-1; i ++) {// 개구부 및 마감 원리에서 switch bool bool = true; for (var J = 0; 배열 [j] = 배열 [j+1]; 배열 [j+1] = 온도; bool = false; // 스위치 스위치}} // 내부 루프의 if가 실행되지 않은 경우 (스위치가 닫히고 다음 문을 실행); if (bool) {break; } m ++;} console.log (Array+", 비교"+m+"휠");참고 : 비교 라운드의 가장 좋은 경우는 0 라운드이며 최악의 경우는 8 라운드입니다.
버블 분류 알고리즘을 살펴 보겠습니다
// JavaScript Bubble 정렬을하고 기본 유형의 프로토 타입에 직접 추가하십시오. // 여기서 JavaScript Language Essence 코드를 사용하여 기본 유형 프로토 타입에 메소드를 추가합니다. // 배열 자체가 생성자이기 때문에 새 생성자 라인을 통해 객체를 생성하므로 배열 .prototype 및 string.prototype ray.method, 첫 번째 배열의 기능 객체에 액세스 할 때 array. if (! this.prototype [name]) {// 프로토 타입 에이 방법이 먼저 있는지 판단하는 것이 가장 좋습니다. 이 경우 프로토 타입 [이름] = func; } 이것을 반환하십시오. }; Array.Method ( 'Bubble', function () {// 버블 알고리즘은 총 배열의 길이, 즉 Len Times의 길이를 루프합니다. {this [j+1] {j] =이 [j+1]; 경고 ([21,32,1,31,22,45,68,37,]. bubble ());나는 다른 프론트 엔드 엔지니어 Xifeng Shouma의 코드를 보았습니다. For Loop의 첫 번째 레이어에서 Exchange Exchange 플래그는 False입니다. 교환이 있으면 사실이됩니다. for 루프 끝의 두 번째 층 후에 판단이 추가됩니다. 그것이 거짓이라면, 즉, 앞뒤로 교환이 없으며, 크기 순서가 정확하다는 것을 증명하면 루프를 위해 외부에서 뛰어 내리기 위해 깨질 수 있습니다.
// 정렬 해야하는 배열 var list = array (23, 45, 18, 37, 92, 13, 24); // 배열 길이 var n = list.length; // exchange var tmp; /// Exchange var exchange; // (var time = 0; time <n -1; time ++) {time + +) {거짓; for (var i = n -1; i> time; i-) {if (list [i] <list [i -1]) {exchange = true; tmp = 목록 [i -1]; 목록 [i]; List [i] = tmp; }} //이 순서로 교환이없는 경우 알고리즘은 (! exchange) {break; }} alert ( '배열 정렬 된 IS :' + list + ', n은 총' + time + 'walk'로 배열되었습니다);나는 이전에 Netizen의 알고리즘을 수집했는데, 이것은 매우 좋습니다. 살펴보세요.
함수 bubblesort (배열) {var length = array.length; var 온도; var issort = false; for (var i = 1; i <길이; i ++) {issort = false; for (var j = 0; j <길이 -I; 배열 [j] = 배열 [j+1]; 배열 [j+1] = 온도; issort = true; }} if (! issort) 브레이크; // 교환이 발생하지 않으면 루프를 종료}} var array = [10, -3,5,34, -34,5,0,9]; Bubblesort (배열); for (var i = 0; i <array.length; i ++) {document.write (array [i]+""); }좋아, 오늘 이걸 요약 해 보겠습니다. 친구들이 JavaScript 버블 분류를 배우는 것이 도움이되기를 바랍니다.