sort的排序及使用
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
sort的排序及使用的更多相关文章
- redis 的使用 (sort set排序集合类型操作)
sort set排序集合类型 释义: sort set 是 string 类型的集合 sort set 的每个元素 都会关联一个 权 通过 权值 可以有序的获取集合中的元素 应用场合: 获取热门帖子( ...
- counting sort 计数排序
//counting sort 计数排序 //参考算法导论8.2节 #include<cstdio> #include<cstring> #include<algorit ...
- Collections.sort自定义排序的使用方法
Collections.sort自定义排序的使用方法 总结:Collections可以对List进行排序:如果想对Map进行排序,可以将Map转化成List,进行排序: public static v ...
- 【转载】C#中自定义Sort的排序规则IComparable接口
C#中的List集合在排序的时候,如果不使用Lambda表达式进行排序的话,一般调用Sort()方法进行排序,如果希望Sort()方法排序后的结果跟我们预想的效果一致或者按照我们自定义的规则排序,则需 ...
- erlang下lists模块sort(排序)方法源码解析(二)
上接erlang下lists模块sort(排序)方法源码解析(一),到目前为止,list列表已经被分割成N个列表,而且每个列表的元素是有序的(从大到小) 下面我们重点来看看mergel和rmergel ...
- erlang下lists模块sort(排序)方法源码解析(一)
排序算法一直是各种语言最简单也是最复杂的算法,例如十大经典排序算法(动图演示)里面讲的那样 第一次看lists的sort方法的时候,蒙了,几百行的代码,我心想要这么复杂么(因为C语言的冒泡排序我记得不 ...
- List<T>集合的Sort自定义排序用法简单解析
List<T>集合的Sort自定义排序用法简单解析: 如下:一系列无序数字,如果想要他们倒序排列,则使用如下代码: 那么如何理解这段代码呢? (x,y)表示相邻的两个对象,如果满足条件:x ...
- 选择排序法、冒泡排序法、插入排序法、系统提供的底层sort方法排序之毫秒级比较
我的代码: package PlaneGame;/** * 选择排序法.冒泡排序法.插入排序法.系统提供的底层sort方法排序之毫秒级比较 * @author Administrator */impo ...
- Spring Data JPA使用Sort进行排序(Using Sort)(转)
通过上一节的学习,我们知道了如何用@Query注解来实现灵活的查询.在上一节的示例中,我也尝试给出简单的排序,通过JPQL语句以及原生SQL来实现的.这样的实现,虽然在一定程度上可以应用,但是灵活度不 ...
- HashMap与HashCode有关,用Sort对象排序
遍历Map,使用keySet()可以返回set值,用keySet()得到key值,使用迭代器遍历,然后使用put()得到value值. 上面这个算法的关键语句: Set s=m.keySet(); I ...
随机推荐
- JPA、Hibernate、Spring Data JPA 的关系,你懂吗?
来源:https://my.oschina.net/u/3080373/blog/1828589 什么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表 ...
- boby标签中相关标签
有关字体相关的标签 h1~h6 字体大小 标题使用<h1>至<h6>标签进行定义,<h1>定义最大的标题,<h6>定义最小的标题.具有 align属 ...
- DataX简介
DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hive.ADS.HBase.TableStore(O ...
- WPFの触发器详解
例子1 简单触发器Triggers——满足简答的条件,触发 <Window x:Class="Styles.SimpleTriggers" xmlns="http: ...
- 如何优雅地在React中处理事件响应&&React绑定onClick为什么要用箭头函数?
React绑定onClick为什么要用箭头函数? https://segmentfault.com/q/1010000010918131 如何优雅地在React中处理事件响应 https://segm ...
- Mongo导出、导入
1.mongodb 数据导出: connection options: /h, /host:<hostname> mongodb host to connect to (setname/h ...
- Electron-vue实战(一)—搭建项目与安装Element UI
Electron-vue实战—搭建项目与安装Element UI 作者:狐狸家的鱼 本文链接 GitHub:sueRimn 一.新建项目1.初始化项目打开cmd,新建一个项目,我使用的是electro ...
- FPN在faster_rcnn中实现细节代码说明
代码参考自:https://github.com/DetectionTeamUCAS/FPN_Tensorflow 主要分析fpn多层金字塔结构的输出如何进行预测. FPN金字塔结构插入在faster ...
- 关键字group by 、 Having的 用法
概述 GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类似Excel里面的透视表. GRO ...
- 理解Java的Class类、"this."关键字、Constructor构造器(一)
import java.util.*; public class BookTest { public static void main(String[] args) { //Book book = n ...