我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaScript中有哪些排序算法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaScript中有哪些排序算法

这期内容当中小编将会给大家带来有关JavaScript中有哪些排序算法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

说明

·  每个浏览器测试得出的数据会不一样。比如我用chrome 测试 一般快速排序都会最快,IE 则根据数组长度有可能希尔最快。

·  不要用太大数据去测试冒泡排序(浏览器崩溃了我不管)

个人理解

·  冒泡排序:最简单,也最慢,貌似长度小于7***

·  插入排序: 比冒泡快,比快速排序和希尔排序慢,较小数据有优势

·  快速排序:这是一个非常快的排序方式,V8的sort方法就使用快速排序和插入排序的结合

·  希尔排序:在非chrome下数组长度小于1000,希尔排序比快速更快

·  系统方法:在forfox下系统的这个方法非常快

  1.  // ---------- 一些排序算法  

  2.     // js 利用sort进行排序  

  3.      systemSort:function(array){  

  4.         return array.sort(function(a, b){  

  5.             return a - b;  

  6.         });  

  7.     },  

  8.     // 冒泡排序  

  9.     bubbleSort:function(array){  

  10.         var i = 0, len = array.length,  

  11.             j, d;  

  12.         for(; i<len; i++){  

  13.             for(j=0; j<len; j++){  

  14.                 if(array[i] < array[j]){  

  15.                     d = array[j];  

  16.                     array[j] = array[i];  

  17.                     array[i] = d;  

  18.                 }  

  19.             }  

  20.         }  

  21.         return array;  

  22.     },  

  23.     // 快速排序  

  24.     quickSort:function(array){  

  25.         //var array = [8,4,6,2,7,9,3,5,74,5];  

  26.         //var array =
     [0,1,2,44,4,324,5,65,6,6,34,4,5,6,2,43,5,6,62,43,5,1,4,51,56,76,7,7,2,1,45,4,6,7];  

  27.         var i = 0;  

  28.         var j = array.length - 1;  

  29.         var Sort = function(i, j){  

  30.               

  31.             // 结束条件  

  32.             if(i == j ){ return };  

  33.               

  34.             var key = array[i];  

  35.             var tempi = i; // 记录开始位置  

  36.             var tempj = j; // 记录结束位置  

  37.               

  38.             while(j > i){  

  39.                 // j <<-------------- 向前查找  

  40.                 if(array[j] >= key){  

  41.                     j--;  

  42.                 }else{  

  43.                     array[i] = array[j]  

  44.                     //i++ ------------>>向后查找  

  45.                     while(j > ++i){  

  46.                         if(array[i] > key){  

  47.                             array[j] = array[i];  

  48.                             break;  

  49.                         }  

  50.                     }  

  51.                 }  

  52.             }  

  53.               

  54.             // 如果***个取出的 key 是最小的数  

  55.             if(tempi == i){  

  56.                 Sort(++i, tempj);  

  57.                 return ;  

  58.             }  

  59.               

  60.             // ***一个空位留给 key  

  61.             array[i] = key;  

  62.               

  63.             // 递归  

  64.             Sort(tempi, i);  

  65.             Sort(j, tempj);  

  66.         }  

  67.           

  68.         Sort(i, j);  

  69.           

  70.         return array;  

  71.     },  

  72.       

  73.     // 插入排序  

  74.     insertSort:function(array){  

  75.           

  76.         // http://baike.baidu.com/image/d57e99942da24e5dd21b7080  

  77.         // http://baike.baidu.com/view/396887.htm  

  78.         //var array = 
    [0,1,2,44,4,324,5,65,6,6,34,4,5,6,2,43,5,6,62,43,5,1,4,51,56,76,7,7,2,1,45,4,6,7];  

  79.           

  80.         var i = 1, j, temp, key,  

  81.             len = array.length;  

  82.           

  83.         for(; i < len; i++){  

  84.               

  85.             temp = j = i;  

  86.             key = array[j];  

  87.               

  88.             while(--j > -1){  

  89.                 if(array[j] > key){  

  90.                     array[j+1] = array[j];  

  91.                 }else{  

  92.                     break;  

  93.                 }  

  94.             }  

  95.               

  96.             array[j+1] = key;  

  97.         }  

  98.           

  99.         return array;  

  100.     },  

  101.       

  102.     // 希尔排序  

  103.     //Jun.array.shellSort(Jun.array.df(10000));  

  104.     shellSort:function(array){  

  105.  

  106.         // http://zh.wikipedia.org/zh/%E5%B8%8C%E5%B0%94%E6%8E%92%E5%BA%8F  

  107.         // var array = [13,14,94,33,82,25,59,94,65,23,45,27,73,25,39,10];  

  108.           

  109.         var tempArr = [1750, 701, 301, 132, 57, 23, 10, 4, 1];   

  110. // reverse() 在维基上看到这个***的步长 较小数组  

  111.         //var tempArr = [1031612713, 217378076, 45806244,   

  112. 9651787, 2034035, 428481, 90358, 19001, 4025, 836, 182, 34, 9, 1]  

  113. //针对大数组的步长选择  

  114.         var i = 0;  

  115.         var tempArrtempArrLength = tempArr.length;  

  116.         var len = array.length;  

  117.         var len2 =  parseInt(len/2);  

  118.           

  119.         for(;i < tempArrLength; i++){  

  120.             if(tempArr[i] > len2){  

  121.                 continue;  

  122.             }  

  123.               

  124.             tempSort(tempArr[i]);  

  125.         }  

  126.  

  127.         // 排序一个步长  

  128.         function tempSort(temp){  

  129.               

  130.             //console.log(temp) 使用的步长统计  

  131.               

  132.             var i = 0, j = 0, f, tem, key;  

  133.             var tempLen = len%temp > 0 ?  parseInt(len/temp) + 1 : len/temp;   

  134.               

  135.               

  136.             for(;i < temp; i++){// 依次循环列  

  137.  

  138.                 for(j=1;temp * j + i < len; j++){
    //依次循环每列的每行  

  139.                     tem = f = temp * j + i;  

  140.                     key = array[f];  

  141.  

  142.                     while((tem-=temp) >= 0){  

  143. // 依次向上查找  

  144.                         if(array[tem] > key){  

  145.                             array[tem+temp] = array[tem];  

  146.                         }else{  

  147.                             break;  

  148.                         }  

  149.                     }  

  150.                       

  151.                     array[tem + temp ] = key;  

  152.                       

  153.                 }  

  154.             }  

  155.               

  156.         }  

  157.           

  158.         return array;  

  159.           

  160.     } 

上述就是小编为大家分享的JavaScript中有哪些排序算法了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaScript中有哪些排序算法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C#中有哪些排序算法

这期内容当中小编将会给大家带来有关C#中有哪些排序算法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#排序算法之冒泡排序 一下是C#开发出冒泡排序算法。希望能为C#语言的学习者带来一些益处。不要忘了
2023-06-17

有哪些排序算法

有哪些排序算法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.插入排序—直接插入排序(Straight Insertion Sort)基本思想:将一个记录插入
2023-06-15

Java中都有哪些排序算法

今天就跟大家聊聊有关Java中都有哪些排序算法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。排序

2023-06-02

Python中的排序算法有哪些?

Python中常用的排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序和堆排序等。下面将分别介绍这些排序算法的原理,并给出相应的代码示例。冒泡排序:冒泡排序是一种简单直观的排序算法。它重复地遍历要排序的列表,比较相邻两个元素大小,并
2023-10-22

Python中都有哪些排序算法

今天就跟大家聊聊有关Python中都有哪些排序算法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.冒泡排序冒泡排序是 CS 入门课程中最常讲授的一种,因为它清楚地说明了排序的工作
2023-06-16

C#排序算法有哪些

C#排序算法有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#排序算法一、冒泡排序(Bubble)using System; namespace BubbleSort
2023-06-17

javascript中有哪些数组排序方法

今天就跟大家聊聊有关javascript中有哪些数组排序方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。javascript排序方法:1、sort()方法,用于对数组的元素进行排序
2023-06-15

PHP中有哪些基本排序算法

PHP中有哪些基本排序算法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 冒泡排序思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调
2023-06-17

java的排序算法有哪些

这篇文章主要介绍“java的排序算法有哪些”,在日常操作中,相信很多人在java的排序算法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java的排序算法有哪些”的疑惑有所帮助!接下来,请跟着小编一起来
2023-07-02

c++常用的排序算法有哪些

小编给大家分享一下c++常用的排序算法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!c++常用的排序算法//选择排序法SelectionSort(int a
2023-06-03

常见的php排序算法有哪些

常见的PHP排序算法有以下几种:1. 冒泡排序(Bubble Sort):依次比较相邻的两个元素,将较大的元素向后移动,直到最后一个元素。2. 选择排序(Selection Sort):每次从待排序序列中选择最小(或最大)的元素放到已排序序
2023-08-25

python中有哪些排序方法

这篇文章主要介绍python中有哪些排序方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillow;4.twisted;
2023-06-14

C语言中有哪些简单的排序算法

这篇文章主要介绍“C语言中有哪些简单的排序算法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言中有哪些简单的排序算法”文章能帮助大家解决问题。1.冒泡排序(Bubble Sort)基本思想:冒泡
2023-07-05

顺序排序法有哪些

推荐教程:java教程  在计算器科学与数学中,一个排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定排序方式进行排列的一种算法。本文将总结几类常用的排序算法,包括冒泡排序、选择排序、插入排序、快速排序和归并排序。1、冒泡排序原理图
顺序排序法有哪些
2018-07-12

编程热搜

目录