javascript 中合并排序算法 详解

我会通过程序的执行过程来给大家合并排序是如何排序的...  合并排序代码如下:

  1. <script type="text/javascript">
  2. function merge(left,right)
  3. {
  4. var result=[];
  5. while(left.length>0&&right.length>0)
  6. {
  7. if(left[0]<right[0])
  8. result.push(left.shift());
  9. else
  10. result.push(right.shift());
  11. }
  12. return result.concat(left).concat(right);
  13. }
  14. function mergeSort(items)
  15. {
  16. if(items.length==1)
  17. {
  18. return items;
  19. }
  20. var middle=Math.floor(items.length/2);
  21. var left=items.slice(0,middle);
  22. var right=items.slice(middle);
  23. return merge(mergeSort(left),mergeSort(right));
  24. }
  25. var items=mergeSort([100,44,2,4,6,78]);
  26. alert(items);
  27. </script>

代码里面用到了递归算法..  和 二分法的思想,  大家看下面的步骤:

上面是我对合并算法的理解,如有不对之处,希望大家多多指导,谢谢!

javascript 中合并排序算法 详解的更多相关文章

  1. JS中常见排序算法详解

    本文将详细介绍在JavaScript中算法的用法,配合动图生动形象的让你以最快的方法学习算法的原理以及在需求场景中的用途. 有句话怎么说来着: 雷锋推倒雷峰塔,Java implements Java ...

  2. 八大排序算法详解(动图演示 思路分析 实例代码java 复杂度分析 适用场景)

    一.分类 1.内部排序和外部排序 内部排序:待排序记录存放在计算机随机存储器中(说简单点,就是内存)进行的排序过程. 外部排序:待排序记录的数量很大,以致于内存不能一次容纳全部记录,所以在排序过程中需 ...

  3. javascript中=、==、===区别详解

    javascript中=.==.===区别详解今天在项目开发过中发现在一个小问题.在判断n==""结果当n=0时 n==""结果也返回了true.虽然是个小问题 ...

  4. JavaScript中return的用法详解

    JavaScript中return的用法详解 最近,跟身边学前端的朋友了解,有很多人对函数中的this的用法和指向问题比较模糊,这里写一篇博客跟大家一起探讨一下this的用法和指向性问题. 1定义 t ...

  5. javascript中的this作用域详解

    javascript中的this作用域详解 Javascript中this的指向一直是困扰我很久的问题,在使用中出错的机率也非常大.在面向对象语言中,它代表了当前对象的一个引用,而在js中却经常让我觉 ...

  6. JavaScript中this的用法详解

    JavaScript中this的用法详解 最近,跟身边学前端的朋友了解,有很多人对函数中的this的用法和指向问题比较模糊,这里写一篇博客跟大家一起探讨一下this的用法和指向性问题. 1定义 thi ...

  7. JavaScript中数组Array方法详解

    ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...

  8. JavaScript的9大排序算法详解

    一.插入排序 1.算法简介 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. ...

  9. js十大排序算法详解

    十大经典算法导图  图片名词解释:n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存 1.冒泡排序 1.1  原始人冒泡排序 functi ...

随机推荐

  1. POJ 1330 Nearest Common Ancestors(lca)

    POJ 1330 Nearest Common Ancestors A rooted tree is a well-known data structure in computer science a ...

  2. leecode刷题(12)-- 整数反转

    leecode刷题(12)-- 整数反转 整数反转 描述: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: - ...

  3. MySQL大数据高并发处理之-查询的优化

    http://www.php1.cn/Content/MySQL_DaShuJuGaoBingFaChuLiZhi_-_ChaXunDeYouHua.html

  4. php中的list()用法中要注意的地方

    php中list()函数是用数组对一列值进行赋值, 该函数只用于数字索引的数组,且假定数字索引从0开始.(这句话很重要,是从索引0开始为变量赋值,如果对应的数字索引不存在,则对应位的变量也为空值.) ...

  5. C语言小总结

    1.函数 有时程序中要多次实现某一功能,就需要多次重复编写实现此功能的代码,这使程序不精练.因此需要模块化程序设计的思想. 函数的返回值要匹配,若函数有返回值可以不接受,但是函数没有返回值不能接受. ...

  6. UITabBarController的属性

    viewControllers UIViewController的数组,即要显示的VC,数组中VC的顺序即是实际展示的VC的顺序.UITabBarController最多展示5个tab,如果数组中的元 ...

  7. [译文]casperjs使用说明-使用命令行

    使用命令行 Casperjs使用内置的phantomjs命令行解析器,在cli模块里,它传递参数位置的命名选项 但是不要担心不能熟练操控CLI模块的API,一个casper实例已经包含了cli属性,允 ...

  8. fdisk命令总结

    fdisk - Partition table manipulator for Linux 一.通过fdisk -l 查看机器所挂硬盘个数及分区情况: fdisk 能划分磁盘成为若干个区,同时也能为每 ...

  9. Python导入模块Import和from+Import区别

    在我们使用python的时候会发现使用Import可以导入模块,from+Import也可以,那么他们之间有什么区别,该用哪一种呢?让我们来看看 1.首先在demo.py中创建一个变量a,定义一个函数 ...

  10. linux新服务器分区挂载

    新买一台服务器,需要自己手动对硬盘进行分区挂载:(这是centos下,其他版本应该也类似) 1.查看没有分区的硬盘:fdisk  -l  由图上信息可知,该服务器由三块硬盘 vda.vdb.vdc,其 ...