JavaScript版排序算法
JavaScript版排序算法:冒泡排序、快速排序、插入排序、希尔排序(小数据时,希尔排序会比快排快哦)
//排序算法
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;
}
}
JavaScript版排序算法的更多相关文章
- javascript高级排序算法之快速排序(快排)
javascript高级排序算法之快速排序(快排)我们之前讨论了javascript基本排序算法 冒泡排序 选择排序 插入排序 简单复习: 冒泡排序: 比较相邻的两个元素,如果前一个比后一个大,则交换 ...
- javascript常用排序算法实现
毕业后,由于工作中很少需要自已去写一些排序,所以那些排序算法都忘得差不多了,不过排序是最基础的算法,还是不能落下啦,于是找了一些资料,然后用Javascript实现了一些常用的算法,具体代码如下: & ...
- javascript常用排序算法总结
算法是程序的灵魂.虽然在前端的开发环境中排序算法不是很经常用到,但常见的排序算法还是应该要掌握的.我在这里从网上整理了一下常见排序算法的javascript实现,方便以后查阅. 归并排序: 1 fun ...
- javascript的排序算法
已经准备秋招一段时间了,因为这个关系也在各种巩固知识,顺便整理一下一些东西.这篇文章就是自己整理了一下各种JS的排序算法,以便自己以后回顾. 冒泡排序 function bubbleSort(arr) ...
- JavaScript之排序算法
一.冒泡排序 原理:1.比较相邻的元素.如果第一个比第二个大,就交换两个数:2.对每一对相邻元素重复做步骤一,从开始第一对到结尾的最后一对,该步骤结束会产生一个最大的数:3.针对所有的数重复以上的步骤 ...
- JavaScript 实现排序算法
参考文章: 十大经典排序算法动画,看我就够了! 1. 冒泡排序 思路 比较所有相邻元素,如果第一个比第二个大,则交换它们 一轮下来,可以保证最后一个数是最大的 执行n-1轮,就可以完成排序 代码 Ar ...
- JavaScript随机排序算法1
1.对数组循环,每一项与随机的某一项位置调换 <ul id="listOne"></ul> <div id="tempOne"&g ...
- JavaScript实现排序算法总结
<script type="text/javascript" src="js/laydate.js" > //插入排序 function inser ...
- javascript实现排序算法
准备好好学习js了,js写的第一个排序 先推荐一个js在线编辑工具,RunJS,还不错. 冒泡排序 var arr = [2,4,1,5,3]; function handle(arr){ for(v ...
随机推荐
- C# DataTable的用法
建表DataTable dtP = new DataTable("Man");加列DataColumn dcP;dcP = new DataColumn("Name&qu ...
- c++中,size_typt, size_t, ptrdiff_t 简介
size_type 类型 从逻辑上来讲,size() 成员函数似乎应该返回整形数值,或如 2.2 节“建议”中所述的无符号整数.但事实上,size 操作返回的是 string::size_type 类 ...
- JS函数作用域及作用域链理解
从事web开发工作,尤其主要是做服务器端开发的,难免会对客户端语言JavaScript一些概念有些似懂非懂的,甚至仅停留在实现功能的层面上,接下来的文章,是记录我对JavaScript的一些概念的理解 ...
- alimama open source mdrill启动后访问蓝鲸任务时出错:Caused by:org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss
启动后,访问:http://IP:1107/mdrill.jsp 蓝鲸任务
- JAVA 类加载器 第14节
JAVA 类加载器 第14节 今天我们将类加载机制5个阶段中的第一个阶段,加载,又叫做装载.为了阅读好区分,以下都叫做装载. 装载的第一步就是要获得二进制的字节流,它可以从读.class文件获得,也可 ...
- 对于windows窗口的标题菜单栏的操作——删除/禁用 最小最大话和关闭
HWND hand = FindWindow(NULL, "计算器"); int nStyle = GetWindowLong(hand, GWL_STYLE);nStyle &a ...
- 节点与坐标系——Cocos2d-x学习历程(十)
1.Node Cocos2d-x把渲染树上的每一个游戏元素抽象为一个节点,即Node.一切游戏元素都继承自Node,因此它们都具有Node所提供的特性.Node定义了一个可绘制对象的通用特性,包括位置 ...
- Netty4.X 学习(一)
Server: import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.net ...
- Java学习之Comparable与Comparator的区别
Comparable & Comparator 都是用来实现集合中元素的比较.排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序 ...
- hadoop笔记之Hive的管理(web界面方式)
Hive的管理(二) Hive的管理(二) Web界面方式 端口号9999 启动方式:hive --service hwi 通过浏览器来访问:http://<IP地址>:9999/hwi/ ...