js排序的方法
//排序算法
window.onload = function(){ 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,8]; //var array = [4,2,5,1,0,3]; array = sorting.shellSort(array); alert(array);}var sorting = { //利用sort方法进行排序 systemSort: function(arr){ return arr.sort(function(a,b){ return a-b; }); }, //冒泡排序 bubbleSort: function(arr){ var len=arr.length, tmp; for(var i=0;i<len-1;i++){ for(var j=0;j<len-1-i;j++){ if(arr[j]>arr[j+1]){ tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } } return arr; }, //快速排序 quickSort: function(arr){ var low=0, high=arr.length-1; sort(low,high); function sort(low, high){ if(low<high){ var mid = (function(low, high){ var tmp = arr[low]; while(low<high){ while(low<high&&arr[high]>=tmp){ high--; } arr[low] = arr[high]; while(low<high&&arr[low]<=tmp){ low++; } arr[high] = arr[low]; } arr[low] = tmp; return low; })(low, high); sort(low, mid-1); sort(mid+1,high); } } return arr; }, //插入排序 insertSort: function(arr){ var len = arr.length; for(var i=1;i<len;i++){ var tmp = arr[i]; for(var j=i-1;j>=0;j--){ if(tmp<arr[j]){ arr[j+1] = arr[j]; }else{ arr[j+1] = tmp; break; } } } return arr; }, //希尔排序 shellSort: function(arr){ console.log(arr); var h = 1; while(h<=arr.length/3){ h = h*3+1; //O(n^(3/2))by Knuth,1973 } for( ;h>=1;h=Math.floor(h/3)){ for(var k=0;k<h;k++){ for(var i=h+k;i<arr.length;i+=h){ for(var j=i;j>=h&&arr[j]<arr[j-h];j-=h){ var tmp = arr[j]; arr[j] = arr[j-h]; arr[j-h] = tmp; } } } } return arr; }}js排序的方法的更多相关文章
- js按照特定的中文字进行排序的方法
之前遇到过按照中文字符排序的需求很顺利的解决了,这次是按照特定的中文字进行排序,比如按照保守型,稳健型,平衡型,成长型,进取型进行排序. 可以使用localeCompare() 方法来实现中文按照拼音 ...
- JS排序:localeCompare() 方法实现中文排序、sort方法实现数字英文混合排序
定义:用本地特定的顺序来比较两个字符串. 语法:stringObject.localeCompare(target) 参数:target——要以本地特定的顺序与 stringObject 进行比较的字 ...
- 排序图解:js排序算法实现
之前写过js实现数组去重, 今天继续研究数组: 排序算法实现. 排序是数据结构主要内容,并不限于语言主要在于思想:大学曾经用C语言研究过一段时间的排序实现, 这段时间有空用JS再将排序知识点熟悉一遍. ...
- JS获取长度方法总结
目录: 1length 2size() 3length与size()的区别 4获取元素的索引 - index() 5获取对应的索引 - eq() 概述: 在工作中大家经常需要获取对象的长度,或者要获取 ...
- JS排序之快速排序
JS排序之快速排序 一个数组中的数据,选择索引为(2/数组长度)的那个数据作为基数,数组中的其他数据与它对比,比它数值小的放在做数组,比它数值大的放在右数组,最后组合 左数组+基数+右数组,其中,左数 ...
- 总结下js排序算法和乱序算法
其实本人最怕的就是算法,大学算法课就感觉老师在讲天书,而且对于前端来说,算法在实际的应用中实在是很有限.毕竟算法要依靠大量的数据为基础才能发挥出算法的效率,就浏览器那性能,......是吧,退一万步说 ...
- JS高级面试题思路(装箱和拆箱、栈和堆、js中sort()方法、.js中Date对象中的getMounth() 需要注意的、开发中编码和解码使用场景有哪些)
1.装箱和拆箱: 装箱:把基本数据类型转化为对应的引用数据类型的操作: var num = 123 // num var objNum = new Num(123) // object console ...
- TODO:Node.js pm2使用方法
TODO:Node.js pm2使用方法 pm2 是一个带有负载均衡功能的Node应用的进程管理器. 当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完 ...
- 【转载】JS中bind方法与函数柯里化
原生bind方法 不同于jQuery中的bind方法只是简单的绑定事件函数,原生js中bind()方法略复杂,该方法上在ES5中被引入,大概就是IE9+等现代浏览器都支持了(有关ES5各项特性的支持情 ...
随机推荐
- day26_python_1124
1.内容回顾 2.验证客户端的合法性 3.block + 进度条 4.数据的输入和输出(铺垫并发编程)(操作系统基础) 5.进程的概念+sys.argv 1.内容回顾 # udp协议 和 tcp协议 ...
- Rhino模型制作——京东狗(练习网格切割)
我最近做了一个京东狗的模型,我先把渲染好的模型给大家看一下. 别看这个模型很复杂,其实京东狗的模型是网上找的,我只是做了一个上面的洞.不过我告诉大家Rhino的下载地址:http://www.xuex ...
- JS 删除数组中某个元素
//删除红色的元素 splice(下标,长度) var arr = ['a','b','c','d']; arr.splice(1,1); console.log(arr); //['a','c', ...
- Android Studio中使用Git进行代码管理(分支、合并)
打开Android Studio选择,选择从Git检出代码 也可以从VCS如下点击 去远程仓库复制地址,这里以码云Gitee第三方代码托管为例,类似Github的界面,点击右边复制项目地址 填一下配置 ...
- Python爬虫入门之正则表达式
在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式! 1.了解正则表达式 正则表达式是对字符串操作的 ...
- [树组BIT]训练两题重新理解ver.
树状数组重(jiao)新(wo)理(zuo)解(ren) POJ-2352 加加加都给我加 输入是一行一行按照x从小到大给出的,所以对于每个点,要考虑的只是x比它小的点的个数.即记录各个x的情况,并且 ...
- JavaScript 进阶
字符串方法 ① charAt() 方法可返回指定位置的字符 ② indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置 ③ split() 方法将字符串分割为字符串数组,并返回此数组 ...
- Kubernetes 常用命令
文章摘自:https://blog.csdn.net/felix_yujing/article/details/51622132 1 查看类命令--- # 查看集群信息 kubectl cluster ...
- volatile 与 JVM 指令重排序
前言: 在做单例模式时 有博客在评论区 推荐使用 volatile 关键字 进行修饰 然后用了两天时间查资料看文档 发现涉及的面太广 虽然已经了解为什么要使用 volatile + synchroni ...
- vue-baidu-map 的简单使用
首先附上vue-baidu-map 文档地址: https://dafrok.github.io/vue-baidu-map/#/zh/index 1.安装,初步使用,文档说的都很明白,就不在过多重复 ...