iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript中有哪些排序算法
  • 811
分享到

JavaScript中有哪些排序算法

2024-04-02 19:04:59 811人浏览 独家记忆
摘要

这期内容当中小编将会给大家带来有关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中有哪些排序算法了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网JavaScript频道。

--结束END--

本文标题: JavaScript中有哪些排序算法

本文链接: https://www.lsjlt.com/news/78287.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • JavaScript中有哪些排序算法
    这期内容当中小编将会给大家带来有关JavaScript中有哪些排序算法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。说明&middot;  每个浏览器测...
    99+
    2024-04-02
  • JavaScript中常用的排序算法有哪些
    这篇文章主要介绍JavaScript中常用的排序算法有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、冒泡排序冒泡排序是我们在编程算法中,算是比较常用的排序算法之一,在学习阶段...
    99+
    2024-04-02
  • 有哪些排序算法
    有哪些排序算法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.插入排序—直接插入排序(Straight Insertion Sort)基本思想:将一个记录插入...
    99+
    2023-06-15
  • C#中有哪些排序算法
    这期内容当中小编将会给大家带来有关C#中有哪些排序算法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#排序算法之冒泡排序   一下是C#开发出冒泡排序算法。希望能为C#语言的学习者带...
    99+
    2023-06-17
  • Python中都有哪些排序算法
    今天就跟大家聊聊有关Python中都有哪些排序算法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.冒泡排序冒泡排序是 CS  入门课程中最常讲授的一种,因为它清楚地说明了...
    99+
    2023-06-16
  • Python中的排序算法有哪些?
    Python中常用的排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序和堆排序等。下面将分别介绍这些排序算法的原理,并给出相应的代码示例。冒泡排序:冒泡排序是一种简单直观的排序算法。它重复地遍历要排序的列表,比较相邻两个元素大小,并...
    99+
    2023-10-22
    算法 Python 排序算法 排序算法的关键词:
  • Java中都有哪些排序算法
    今天就跟大家聊聊有关Java中都有哪些排序算法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。排序<p _hover-ignore="1" white-spa...
    99+
    2023-06-02
  • php排序算法有哪些
    php中常见的排序算法有冒泡排序、选择排序、插入排序、归并排序、快速排序几种冒泡排序算法冒泡排序算法是一种简单直观的排序算法,其原理是重复地走访需要排序的元素列表,依次比较两个相邻的元素,如果顺序错误就交换它们的位置,重复地进行直到没有相邻...
    99+
    2024-04-02
  • python排序算法有哪些
    python中常见的排序算法有以下几种冒泡排序算法冒泡排序算法是一种简单直观的排序算法,其原理是重复地走访需要排序的元素列表,依次比较两个相邻的元素,如果顺序错误就交换它们的位置,重复地进行直到没有相邻的元素需要交换,则元素列表排序完成。选...
    99+
    2024-04-02
  • C#排序算法有哪些
    C#排序算法有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#排序算法一、冒泡排序(Bubble)using System;   ...
    99+
    2023-06-17
  • javascript中有哪些数组排序方法
    今天就跟大家聊聊有关javascript中有哪些数组排序方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。javascript排序方法:1、sort()方法,用于对数组的元素进行排序...
    99+
    2023-06-15
  • PHP中有哪些基本排序算法
    PHP中有哪些基本排序算法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 冒泡排序思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调...
    99+
    2023-06-17
  • java的排序算法有哪些
    这篇文章主要介绍“java的排序算法有哪些”,在日常操作中,相信很多人在java的排序算法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java的排序算法有哪些”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-02
  • C++数组排序算法有哪些
    本篇内容主要讲解“C++数组排序算法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++数组排序算法有哪些”吧!三种简单排序1:选择排序(从小到达)从第一...
    99+
    2024-04-02
  • c++常用的排序算法有哪些
    小编给大家分享一下c++常用的排序算法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!c++常用的排序算法//选择排序法SelectionSort(int a...
    99+
    2023-06-03
  • 常用的JS排序算法有哪些
    这篇文章给大家分享的是有关常用的JS排序算法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.冒泡排序var bubbleSort = fun...
    99+
    2024-04-02
  • 常见的php排序算法有哪些
    常见的PHP排序算法有以下几种:1. 冒泡排序(Bubble Sort):依次比较相邻的两个元素,将较大的元素向后移动,直到最后一个...
    99+
    2023-08-25
    php
  • C语言中有哪些简单的排序算法
    这篇文章主要介绍“C语言中有哪些简单的排序算法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言中有哪些简单的排序算法”文章能帮助大家解决问题。1.冒泡排序(Bubble Sort)基本思想:冒泡...
    99+
    2023-07-05
  • JavaScript中几种常用的排序算法分别是哪些
    JavaScript中几种常用的排序算法分别是哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。插入排序<html><script>function...
    99+
    2023-06-03
  • python中有哪些排序方法
    这篇文章主要介绍python中有哪些排序方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillow;4.twisted;...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作