Var a = [4,2,6,3,1,9,5,7,8,0]; 예로.
1. 힐 정렬. 힐 정렬은 삽입 분류에서 만들어진 업그레이드입니다. 먼 거리를 가진 사람들과 비교하는 방법입니다.
함수 shellsort (arr) {var i, k, j, len = arr.length, gap = math.ceil (len/2), temp; while (gap> 0) {for (var k = 0; k <gap; k ++) {var tagarr = []; tagarr.push (i = k+gap; i <len; i = i+gap) {temp = arr [i]; tagarr.push (temp); for (j = i-gap; j> -1; j = j-gap) {if (arr [j]> temp) {arr [j+gap] = arr [j]; } else {break; }} arr [j+gap] = 임시; } console.log (tagarr, "gap :"+gap); // 현재 삽입 된 정렬 된 배열을 출력합니다. Console.log (ARR); //이 라운드의 정렬 후 배열을 출력합니다. } gap = parseint (gap/2); } rack arr; }프로세스 출력 :
[4, 2, 2, 6, 3, 1, 9, 5, 7, 8, 0] [1, 0] "갭 : 5"[4, 2, 6, 3, 1, 9, 5, 7, 8, 7] "갭 : 5"[4, 2, 6, 3, 1, 9, 5, 7, 8, 0] [3, 8] "갭 : 5, 2, 3, 3, 9, 5, 5, 5, 3 [1, 0] "갭 : 5"[4, 2, 6, 3, 1, 9, 5, 7, 8, 0] [1, 0] "간격 : 5"[4, 2, 6, 3, 1, 9, 5, 7, 8, 0] [1, 0] "Gap : 5"[4, 2, 2, 6, 9, 5, 8, 8, 0] [6, 7] "4, 1, 1, 1, 1 9, 5, 7, 8, 0] [1, 0] "간격 : 5"[4, 2, 6, 3, 0, 9, 5, 7, 8, 0] [6, 7] "gap : 5"[4, 2, 6, 3, 1, 9, 5, 8, 0] "gap : 5"[4, 2, 6, 3, 0, 9, 7, 7, 7, 7]] [4, 2, 2, 6, 3, 1, 9, 5, 7, 8, 0] [1, 0] "갭 : 5"[4, 2, 3, 5, 9, 6, 7, 8, 1] [2, 3, 9, 7, 1] "갭 : 2"[0, 1, 4, 4, 2, 5, 3, 6, 7, 9] "갭 : 1"0, 1, 2, 4, 4, 5, 9]
출력에서 볼 수 있습니다. 첫 번째 라운드 사이의 간격은 5입니다.이 간격의 배열을 차례로 정렬하십시오.
간격은 5입니다.
[4, 2, 2, 6, 3, 1, 9, 5, 7, 8, 0] [1, 0] "갭 : 5"[4, 2, 6, 3, 1, 9, 5, 7, 8, 7] "갭 : 5"[4, 2, 6, 3, 1, 9, 5, 7, 8, 0] [3, 8] "갭 : 5, 2, 3, 3, 9, 5, 5, 5, 3 [1, 0] "갭 : 5"[4, 2, 6, 3, 1, 9, 5, 7, 8, 0] [1, 0] "간격 : 5"[4, 2, 6, 3, 1, 9, 5, 7, 8, 0] [1, 0] "Gap : 5"[4, 2, 2, 6, 9, 5, 8, 8, 0] [6, 7] "4, 1, 1, 1, 1 9, 5, 7, 8, 0] [1, 0] "간격 : 5"[4, 2, 6, 3, 0, 9, 5, 7, 8, 0] [6, 7] "gap : 5"[4, 2, 6, 3, 1, 9, 5, 8, 0] "gap : 5"[4, 2, 6, 3, 0, 9, 7, 7, 7, 7]] [4, 2, 2, 6, 3, 1, 9, 5, 7, 8, 0] [1, 0] "갭 : 5"[4, 2, 3, 5, 9, 6, 7, 8, 1] [2, 3, 9, 7, 1] "갭 : 2"[0, 1, 4, 4, 2, 5, 3, 6, 7, 9] "갭 : 1"0, 1, 2, 4, 4, 5, 9]
간격은 2입니다.
[4, 2, 6, 3, 0, 9, 5, 7, 8, 1] 4 6 0 5 8 2 3 9 7 1
정렬 후 :
[0, 1, 4, 2, 5, 3, 6, 7, 8, 9]
간격은 1입니다.
정렬 후 :
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].
2. 빠른 정렬. 배열에 값이 표시된 배열을 만듭니다. 이보다 작은 값을 배열의 왼쪽에 놓고 값보다 큰 값을 배열 오른쪽에 넣습니다. 그런 다음 왼쪽 및 오른쪽 배열에서 동일한 작업을 재귀 적으로 수행하십시오. 정렬이 완료 될 때까지. 일반적으로 배열의 첫 번째 값이 표시됩니다.
암호:
함수 QuickSort (arr) {var len = arr.length, leftarr = [], rightarr = [], tag; if (len <2) {return arr; } tag = ARR [0]; for (i = 1; i <len; i ++) {if (arr [i] <= tag) {leftarr.push (arr [i])} else {rightarr.push (arr [i]); }} return QuickSort (leftarr) .concat (tag, quicksort (rightarr)); }3. 순서와 정렬. 일련의 정렬 된 후속 시퀀스를 크고 완전한 순서 시퀀스로 병합하십시오. 가장 작은 장치로 시작합니다. 그런 다음 병합 된 순서 배열을 점차 병합합니다. 마지막으로 병합 분류가 달성됩니다.
순서가 2 개의 배열을 병합하는 방법 :
함수 보조 (ARR1, ARR2) {var len1 = arr1.length, len2 = arr2.length, i = 0, j = 0, arr3 = [], barr1 = arr1.slice (), barr2 = arr2.slice (); while (barr1.length! = 0 || barr2.length! = 0) {if (barr1.length == 0) {arr3 = arr3.concat (barr2); barr2.length = 0; } else if (barr2.length == 0) {arr3 = arr3.concat (barr2); barr2.length = 0; } else if (barr2.length == 0) {arr3 = arr3.concat (barr1); barr1.length = 0; } else {if (bar1 [0] <= barr2 [0]) {arr3.push (bar1 [0]); barr1.shift (); } else {arr3.push (barr2 [0]); barr2.shift (); }} return arr3; }병합 정렬 :
함수 mergesort (arr) {var len = arr.length, arrleft = [], arrright = [], gap = 1, maxgap = len-1, gaparr = [], glen, n; while (gap <maxgap) {gap = math.pow (2, n); if (gap <= maxgap) {gaparr.push (gap); } n ++; } glen = gaparr.length; for (var i = 0; i <glen; i ++) {gap = gaparr [i]; for (var j = 0; arrright = arr.slice (j+갭, j+갭*2); console.log ( "왼쪽 :"+arrleft, "오른쪽 :"+arrright); arr = arr.slice (0, j) .concat (subsort (arrleft, arrright), arr.slice (j+gap*2)); }} 반환 ARR; }분류 [4,2,6,3,1,9,5,8,0] 출력 :
왼쪽 : 2 왼쪽 : 6 오른쪽 : 3 오른쪽 : 1 오른쪽 : 1 오른쪽 : 5 오른쪽 : 5 오른쪽 : 8 오른쪽 : 8 오른쪽 : 0 왼쪽 : 2,4 오른쪽 : 3,9 오른쪽 : 5,7 왼쪽 : 0,8 오른쪽 : 0,4,6 오른쪽 : 1,5,7,9 왼쪽 : 왼쪽 : 1,2,3,4,5,6,7,9,8
가장 작은 단위에서 시작하는 것을 볼 수 있습니다.
첫 번째 라운드는 인접한 요소를 순서대로 병합합니다. 4,2; 6,3; 1,9; 5,7; 8,0
병합이 완료되면 [2,4,3,6,1,9,5,7,0,8]
두 번째 라운드는 2 개의 요소의 한 단위로 병합됩니다. [ 2,4], [3,6]; [1,9], [5,7]; [0,8], [];
병합이 완료되면 [2,3,4,6,1,5,7,9,0,8]
세 번째 라운드는 4 개의 요소의 한 단위로 합쳐진다 : [ 2,3,4,6], [1,5,7,9]; [0,8], []
병합이 완료된 후 : [1,2,3,4,5,6,7,9,0,8];
네 번째 라운드는 8 개의 요소의 한 단위로 합쳐진다 : [1,2,3,4,5,6,7,9], [0,8];
병합이 완료되었습니다. [0,1,2,3,4,6,7,8,9];
위의 내용은이 기사에 관한 모든 것입니다. 모든 사람의 학습에 도움이되기를 바랍니다.