The following small series will bring you a JS Implementation Method of several classic sorting algorithms. I think it is quite good. Now I will share it with you and give you a reference. Let's take a look at the Bubble sorting.
Function BubbleSort (array) {var length = array. length; for (var I = length-1; I> 0; I --) {// used to narrow down the for (var j = 0; j <I; j ++) {// bubble in the range. The largest one in the range will pop to the end if (array [j]> array [j + 1]). {var temp = array [j]; array [j] = array [j + 1]; array [j + 1] = temp ;}} console. log (array); console. log ("---------------------------");} return array;} var arr = [, 3]; var result = BubbleSort (arr); console. log (result);/* [9, 8, 7, 7, 6, 5, 10, 3, 11] --------------------------- [8, 7, 7, 6, 5, 9, 3, 10, 11] ------------------------- [7, 7, 6, 5, 8, 3, 9, 10, 11] --------------------------- [7, 6, 5, 7, 3, 8, 9, 10, 11] ------------------------- [6, 5, 7, 3, 7, 8, 9, 10, 11] --------------------------- [5, 6, 3, 7, 7, 8, 9, 10, 11] ------------------------- [5, 3, 6, 7, 7, 8, 9, 10, 11] --------------------------- [3, 5, 6, 7, 7, 8, 9, 10, 11] --------------------------- [3, 5, 6, 7, 7, 8, 9, 10, 11] */
2. Select sorting
Function SelectionSort (array) {var length = array. length; for (var I = 0; I <length; I ++) {// narrow the selected range var min = array [I]; // assume that the first subscript in the range is the smallest var index = I; // The subscript for (var j = I + 1; j <length; j ++) {// select the minimum value in the range if (array [j] <min) {min = array [j]; index = j ;}} if (index! = I) {// swap the minimum value in the range to the first var temp = array [I]; array [I] = array [index]; array [index] = temp;} console. log (array); console. log ("---------------------");} return array;} var arr = [1, 10,100, 90, 65, 5, 4, 10, 2, 4]; var result = SelectionSort (arr); console. log (result);/* [1, 10,100, 90, 65, 5, 4, 10, 2, 4] ------------------- [1, 2,100, 90, 65, 5, 4, 10, 10, 4] ----------------- [1, 2, 4, 90, 65, 5,100, 10, 10, 4] ------------------- [1, 2, 4, 4, 65, 5,100, 10, 10, 90] ----------------- [1, 2, 4, 4, 5, 65,100, 10, 10, 90] ------------------- [1, 2, 4, 4, 5, 10,100, 65, 10, 90] ----------------- [1, 2, 4, 4, 5, 10, 10, 65,100, 90] ------------------- [1, 2, 4, 4, 5, 10, 10, 65,100, 90] ------------------- [1, 2, 4, 4, 5, 10, 10, 65, 90,100] ------------------- [1, 2, 4, 4, 5, 10, 10, 65, 90,100] ------------------- [1, 2, 4, 4, 5, 10, 10, 65, 90,100] */
Iii. Insert sorting
Function InsertionSort (array) {var length = array. length; for (var I = 0; I <length-1; I ++) {// I indicates the subscript var insert = array [I + 1]; var index = I + 1; // record the subscript to be inserted for (var j = I; j> = 0; j --) {if (insert <array [j]) {// the item to be inserted is smaller than that of it. Move array [j + 1] = array [j]; index = j ;}} array [index] = insert; console. log (array); console. log ("-----------------------");} return array;} var arr = [, 90, 39]; var result = InsertionSort (arr); console. log (result);/* [90,100, 80, 62, 80, 8, 1, 2, 39] --------------------- [80, 90,100, 62, 80, 8, 1, 2, 39] ----------------------- [62, 80, 90,100, 80, 8, 1, 2, 39] --------------------- [62, 80, 80, 90,100, 8, 1, 2, 39] --------------------- [8, 62, 80, 80, 90,100, 1, 2, 39] --------------------- [1, 8, 62, 80, 80, 90,100, 2, 39] --------------------- [1, 2, 8, 62, 80, 80, 90,100, 39] --------------------- [1, 2, 8, 39, 62, 80, 80, 90,100] ----------------------- [1, 2, 8, 39, 62, 80, 80, 90,100] */
Iv. Hill sorting
function ShellSort(array) { var length = array.length; var gap = Math.round(length / 2); while (gap > 0) { for (var i = gap; i < length; i++) { var insert = array[i]; var index = i; for (var j = i; j >= 0; j-=gap) { if (insert < array[j]) { array[j+gap] = array[j]; index = j; } } array[index] = insert; } console.log(array); console.log("-----------------------"); gap = Math.round(gap/2 - 0.1); } return array;}var arr = [ 13, 14, 94, 33, 82, 25, 59, 94, 65, 23, 45, 27, 73, 25, 39, 10 ];var result = ShellSort(arr);console.log(result); /*[ 13, 14, 45, 27, 73, 25, 39, 10, 65, 23, 94, 33, 82, 25, 59, 94 ]-----------------------[ 13, 14, 39, 10, 65, 23, 45, 27, 73, 25, 59, 33, 82, 25, 94, 94 ]-----------------------[ 13, 10, 39, 14, 45, 23, 59, 25, 65, 25, 73, 27, 82, 33, 94, 94 ]-----------------------[ 10, 13, 14, 23, 25, 25, 27, 33, 39, 45, 59, 65, 73, 82, 94, 94 ]-----------------------[ 10, 13, 14, 23, 25, 25, 27, 33, 39, 45, 59, 65, 73, 82, 94, 94 ]*/
5. Merge Sorting
function MergeSort(array) { var length = array.length; if (length <= 1) { return array; } else { var num = Math.ceil(length/2); var left = MergeSort(array.slice(0, num)); var right = MergeSort(array.slice(num, length)); return merge(left, right); }}function merge(left, right) { console.log(left); console.log(right); var a = new Array(); while (left.length > 0 && right.length > 0) { if (left[0] <= right[0]) { var temp = left.shift(); a.push(temp); } else { var temp = right.shift(); a.push(temp); } } if (left.length > 0) { a = a.concat(left); } if (right.length > 0) { a = a.concat(right); } console.log(a); console.log("-----------------------------"); return a;}var arr = [ 13, 14, 94, 33, 82, 25, 59, 94, 65, 23, 45, 27, 73, 25, 39, 10 ];var result = MergeSort(arr);console.log(result);/*[ 13 ][ 14 ][ 13, 14 ]-----------------------------[ 94 ][ 33 ][ 33, 94 ]-----------------------------[ 13, 14 ][ 33, 94 ][ 13, 14, 33, 94 ]-----------------------------[ 82 ][ 25 ][ 25, 82 ]-----------------------------[ 59 ][ 94 ][ 59, 94 ]-----------------------------[ 25, 82 ][ 59, 94 ][ 25, 59, 82, 94 ]-----------------------------[ 13, 14, 33, 94 ][ 25, 59, 82, 94 ][ 13, 14, 25, 33, 59, 82, 94, 94 ]-----------------------------[ 65 ][ 23 ][ 23, 65 ]-----------------------------[ 45 ][ 27 ][ 27, 45 ]-----------------------------[ 23, 65 ][ 27, 45 ][ 23, 27, 45, 65 ]-----------------------------[ 73 ][ 25 ][ 25, 73 ]-----------------------------[ 39 ][ 10 ][ 10, 39 ]-----------------------------[ 25, 73 ][ 10, 39 ][ 10, 25, 39, 73 ]-----------------------------[ 23, 27, 45, 65 ][ 10, 25, 39, 73 ][ 10, 23, 25, 27, 39, 45, 65, 73 ]-----------------------------[ 13, 14, 25, 33, 59, 82, 94, 94 ][ 10, 23, 25, 27, 39, 45, 65, 73 ][ 10, 13, 14, 23, 25, 25, 27, 33, 39, 45, 59, 65, 73, 82, 94, 94 ]-----------------------------[ 10, 13, 14, 23, 25, 25, 27, 33, 39, 45, 59, 65, 73, 82, 94, 94 ]*/
6. Quick sorting
function QuickSort(array) { var length = array.length; if (length <= 1) { return array; } else { var smaller = []; var bigger = []; var base = [array[0]]; for (var i = 1; i < length; i++) { if (array[i] <= base[0]) { smaller.push(array[i]); } else { bigger.push(array[i]); } } console.log(smaller.concat(base.concat(bigger))); console.log("-----------------------"); return QuickSort(smaller).concat(base.concat(QuickSort(bigger))); }}var arr = [ 8, 10, 100, 90, 65, 5, 4, 10, 2, 4 ];var result = QuickSort(arr);console.log(result);/*[ 5, 4, 2, 4, 8, 10, 100, 90, 65, 10 ]-----------------------[ 4, 2, 4, 5 ]-----------------------[ 2, 4, 4 ]-----------------------[ 2, 4 ]-----------------------[ 10, 10, 100, 90, 65 ]-----------------------[ 90, 65, 100 ]-----------------------[ 65, 90 ]-----------------------[ 2, 4, 4, 5, 8, 10, 10, 65, 90, 100 ]*/
The JS implementation method of the above several classical sorting algorithms is all the content shared by Alibaba Cloud xiaobian. I hope you can give us a reference and support me a lot.