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各项特性的支持情 ...
随机推荐
- 软件测试第一次试验JUnit
一.Junit, hamcrest以及eclemma的安装 对于Junit和hamcrest的安装,我并没有从下载Junit和hamcrest相关的jar包然后通过build path导入到项目中,而 ...
- stackExchange.redis 实现模糊匹配批量查询
如果使用redis的频次较高,那么业务中经常会出现需要根据关键字进行批量查询,所以总结一下StackExchange中使用批量查询的方法(如果数据量很大,那么在redis中模糊查询很耗时,请慎用!) ...
- ios和android适配问题总结
_________________________________________________________________________________ 相关知识点 移动端. 适配(兼容). ...
- mysql的报错
这个错误是因为mysql的进程错误关闭导致的,我们需要把/var/lib/mysql/mysql.sock文件删除或者改名,之后再重启就ok
- sql排列组合
一个表中4条记录,如何查询所有可能组成的结果. 例如: 1 2 3 4 四条记录,最后组成(12),(13),(14),(23),(24),(34) 最后sql如下: SELECT a.name ...
- javeEE第一周
1.我对javaEE这一门课的要求和想要达到的一个效果: 我对javaEE还是比较感兴趣的,大家也知道我是一个懂安全的PHPER,也有一些项目经验,我发现PHP做的web开发试用的场合主要是一些中小型 ...
- css 技巧 (持续更新)
1.滚动条样式 /*自定义滚动条-----隐藏型*/ .scroll::-webkit-scrollbar-track{ border-radius: 1px; } .scroll::-w ...
- spark中map与flatMap的区别
作为spark初学者对,一直对map与flatMap两个函数比较难以理解,这几天看了和写了不少例子,终于把它们搞清楚了 两者的区别主要在于action后得到的值 例子: import org.apac ...
- ng-repeat 中的track by
<div style="font-size:15px"ng-repeat="item in groups.items track by $index"&g ...
- Qt5.7.0移植到4412
搞了几天,终于把Qt5.7移植到4412上,下面是一些自己移植过程中的记录,希望能帮到其他人. 一.需要下载的文件, 下载qt5.7源码qt-everywhere-opensource-src-5.7 ...