JS implementation methods of several classic sorting algorithms and js sorting algorithms

Source: Internet
Author: User

JS implementation methods of several classic sorting algorithms and js sorting algorithms

I. 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 the house of helping customers.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.