sort() 方法在适当的位置对数组的元素进行排序,并返回数组。数组会按照字符的Unicode进行排序(把数组里面当成字符串处理)

1. 按升序排列:

var arr=[1,11,2,22,5,4,0];
arr.sort(
function(n1,n2){
return n1-n2;
});
alert(arr);//[0,1,2,4,5,11,22]

2. 随机排序:

var arr=[1,11,2,22,5,4,0];
arr.sort(
function(n1,n2){
return Math.random()-0.5;
});
alert(arr);

3. 按降序排列:

var arr=[1,11,2,22,5,4,0];
arr.sort(
function(n1,n2){
return n2-n1;
});
alert(arr);

4. 根据参数属性值排序(sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同。)

var arr = [
{name:'zopp',age:0},
{name:'gpp',age:18},
{name:'yjj',age:8}
]; function compare(property){
return function(a,b){
var value1 = a[property];
var value2 = b[property];
return value1 - value2;
}
}
console.log(arr.sort(compare('age')))

5. 根据参数不同,来确定是升序排列,还是降序排序

sortBy: function(attr,rev){
//第二个参数没有传递 默认升序排列
if(rev == undefined){
rev = 1;
}else{
rev = (rev) ? 1 : -1;
}
return function(a,b){
a = a[attr];
b = b[attr];
if(a < b){
return rev * -1;
}
if(a > b){
return rev * 1;
}
return 0;
}
}
newArray.sort(sortBy('number',false))

V8 引擎 sort 函数只给出了两种排序 InsertionSort 和 QuickSort,数量小于10的数组使用 InsertionSort,比10大的数组则使用 QuickSort。

原理:sort()方法如何实现排序

第一次1和8比较,1<8,不需要调整位置。   

  第二次8和3比较,8>3,需要调整位置。但是这里没有交换位置,仅仅是8覆盖了3位置。这里就可以推断出不是单纯的使用了冒泡算法。
  第三是1和3比较,1<3,3替换了8的位置。什么鬼,几个意思???看到这里我也是表示不懂呀。那就继续往下看咯。      第四是8和5比较,8>5,又仅仅是覆盖,没有交换位置。还是不懂,继续往下!
  第五是3和5比较,3<5,5替换了8的位置,不懂,继续往下!      第六是8和-1比较,8>-1, 还仅仅是覆盖,继续往下!
  第七、八、九次,-1依次和5,3,1做了比较,并且5,3,1都移动了一次位置。

我们得出了结论:sort()方法是使用的冒泡和插入两种方式结合进行排序的。

模拟排序:

 var arr=[32,12,4,20,1,54,56,6,14];
function findMinIndex(arr,start){
var iMin=arr[start];
var iMinIndex=start;
for(var i=start;i<arr.length;i++){
if(iMin>arr[i]){
iMin=arr[i];
iMinIndex=i;
}
}
return iMinIndex;
}
for(var i=0;i<arr.length;i++){
var n=findMinIndex(arr,i);
var tem;
tem=arr[n];
arr[n]=arr[i];
arr[i]=tem;
}
alert(arr);

参考:https://www.cnblogs.com/yang0901/p/6792531.html

https://blog.csdn.net/u011250873/article/details/78731162

最新文章

  1. .NET各大平台数据列表控件绑定原理及比较(WebForm、Winform、WPF)
  2. How to create Web Deployment Package and install the package
  3. python标准库00 学习准备
  4. IIS 内部运行机制
  5. JS-确认框
  6. mysql 随机字符的产生方法
  7. Autel MaxiDAS DS708 Fatal Application Error illegal operation
  8. JSON AND BSON
  9. 浅谈print2flash的在线预览转换应用(原创)
  10. WCF技术剖析之十四:泛型数据契约和集合数据契约(下篇)
  11. 10-18 noip提高组模拟赛(codecomb)T1倍增[未填]
  12. 说说API的防重放机制
  13. HTTP协议类
  14. Java虚拟机—Java8内存模型(整理版)
  15. struts2之数据校验
  16. CentOS下将php和mysql命令加入到环境变量中-简单
  17. 基于vue-cli配置手淘的lib-flexible + rem,实现移动端自适应
  18. 从javaScript中学习正则表达式——RegExp
  19. 写在vue总结之前(二)
  20. Array常用函数收藏

热门文章

  1. HDU 3622 Bomb Game(2-sat)
  2. docker--container的port映射
  3. etcd注册服务
  4. 获取年月日格式为yyyy-m-d简单写法
  5. android jni控制gpio (rk3288)
  6. 分析dwebsocket的源码过程
  7. 你了解SEO中的时效性吗?
  8. python核心编程socket备忘
  9. postgres服务安装,启动和配置
  10. 数据结构---Java---HashMap---JDK1.7