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各项特性的支持情 ...
随机推荐
- day_45_Django
day45 内容回顾 #### 1. HTTP协议 tcp/IP协议 HTTP特性: 无连接 请求--响应模式 请求格式 响应格式 Django相关 Django下载 命令行: pip install ...
- vue做的第二个app
用vue做应用最好的还是组件的复用上次做饿了吗的app封装了一个评分star的组件只要引入组件传入size大小和score分数就行了,这次做豆瓣直接就就用上了不用重复写代码.不过vue做单页应用全部挂 ...
- Django REST framework--序列化
Django REST framework--序列化 基础准备工作 创建项目添加应用 (venv) lee@lee:~/PycharmProjects/Djdemo/djdemo$ python ma ...
- json、demjson
一.json 概述: json.dumps():将 Python 对象编码成 JSON 字符串, dic -> json str json.dump() :将 Python 对象保存成 JSO ...
- java 读取文件乱码
private void filereader() throws IOException{ BufferedReader bf= new BufferedReader(new InputStream ...
- 其他知识点,API
日期和Math 获取2017-06-10格式的日期 Date.now() //当前时间毫秒数 var dt=new Date() dt.getTime() //毫秒数 dt.getFullYear() ...
- Android : Camera之camx hal架构
一.camx的代码结构 目前主流的机型都使用camx架构,这个架构和之前架构的主要区别就是 芯片接口层的代码从hardware/qcom 迁移到 vendor/qcom/proprietary/下面, ...
- C# 异常:索引超出了数组界限。
数组如果只取到了三个元素, 而引用数组的时候引用了五个, 就会有此错误.
- StringBuffer&StringBuilder
对字符串修改时,用到StringBuffer&StringBuilder,能够多次修改对象并且不产生新的未使用对象 StringBuilder线程不安全(不能同步访问),速度有优势,多数情况下 ...
- shell脚本学习总结(不断更新中)
前言:自从大学毕业参加工作以来,接触的开发工作都是在服务端完成,于是接触了比较多的Linux当做开发机使用,或多或少有一些重复性的工作,于是开始琢磨学习一些shell脚本的知识,以便处理这些繁琐的事情 ...