热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaScript实现堆排序,归并排序,快速排序

堆排序堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时

堆排序

堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了

arr &#61; [20,50,20,40,6,878,70,10,80,30,60,9,44];console.log("排序之前&#xff1a;" &#43; arr);heapSort(arr);console.log("排序之后&#xff1a;" &#43; arr);function heapSort(arr) {var end &#61; arr.length -1;for (var i &#61; parseInt(arr.length/2) -1; i >&#61; 0; i--) {heapAdjust(arr,i,end);}while(end >&#61; 0) {swap(arr,0,end--); //将堆顶元素与尾节点交换后&#xff0c;长度减1&#xff0c;尾元素最大heapAdjust(arr,0,end); //再次对堆进行调整}}function heapAdjust(arr,i,end) {var left &#61; 2*i&#43;1, right, flag;while(left <&#61; end){ //判断当前父节点有无左节点&#xff08;即有无孩子节点&#xff0c;left为左节点&#xff09;right &#61; left &#43;1;flag &#61; left;if (right <&#61; end && arr[left]

归并排序

归并排序&#xff0c;其的基本思路就是将数组分成二组A&#xff0c;B&#xff0c;如果这二组组内的数据都是有序的&#xff0c;那么就可以很方便的将这二组数据进行排序。如何让这二组组内数据有序了&#xff1f;

可以将A&#xff0c;B组各自再分成二组。依次类推&#xff0c;当分出来的小组只有一个数据时&#xff0c;可以认为这个小组组内已经达到了有序&#xff0c;然后再合并相邻的二个小组就可以了。这样通过先递归的分解数列&#xff0c;再合并数列就完成了归并排序。

// 归并排序myarr&#61;[2,43,4,7,4,766,7,3,324,54,5455,89];console.log("归并排序前&#xff1a;" &#43; myarr);mergeSort(myarr, myarr.length);console.log("归并排序后&#xff1a;" &#43; myarr);function mergeSort(arr, len) {var tmpArr &#61; new Array(len);mergeSortDevide(arr,0,len-1,tmpArr);tmpArr &#61; [];return true;}function mergeSortDevide(arr, first, last, tempArr) {if (first

快速排序

对于一字给定的记录&#xff0c;通过一趟排序后&#xff0c;将原序列分为两部分&#xff0c;其中前一部分的所有记录均比后一部分的所有记录小&#xff0c;然后再一次对前后两部分的记录进行快速排序&#xff0c;递归该过程&#xff0c;指导序列中所有记录均有序为止。

// 快速排序function quickSort(arr, low, high) {var i,j,index;if (low>high)return;i &#61; low;j &#61; high;index &#61; arr[i];while(i index)j--;if(i



推荐阅读
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • LeetCode笔记:剑指Offer 41. 数据流中的中位数(Java、堆、优先队列、知识点)
    本文介绍了LeetCode剑指Offer 41题的解题思路和代码实现,主要涉及了Java中的优先队列和堆排序的知识点。优先队列是Queue接口的实现,可以对其中的元素进行排序,采用小顶堆的方式进行排序。本文还介绍了Java中queue的offer、poll、add、remove、element、peek等方法的区别和用法。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 初识java关于JDK、JRE、JVM 了解一下 ... [详细]
  • 生产环境下JVM调优参数的设置实例
     正文前先来一波福利推荐: 福利一:百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。福利二 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
author-avatar
手机用户2502931035
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有