-
js排序——sort()排序用法
2018-04-20 11:48:12sort() 方法用于对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串Unicode码点。 语法:array.sort(fun);参数fun可选。规定排序顺序。必须是函数。 注:如果调用该方法时没有使用参数,将按字母顺序...sort() 方法用于对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串Unicode码点。
语法:array.sort(fun);参数fun可选。规定排序顺序。必须是函数。
注:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。如果想按照其他规则进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
简单点就是:比较函数两个参数a和b,返回a-b 升序,返回b-a 降序
//注:原数组发生改变例:
1.不传参数,将不会按照数值大小排序,按照字符编码的顺序进行排序;var arr = ['General','Tom','Bob','John','Army']; var resArr = arr.sort(); console.log(resArr);//输出 ["Army", "Bob", "General", "John", "Tom"] var arr2 = [30,10,111,35,1899,50,45]; var resArr2 = arr2.sort(); console.log(resArr2);//输出 [10, 111, 1899, 30, 35, 45, 50]
2.传入参数,实现升序,降序;
var arr3 = [30,10,111,35,1899,50,45]; arr3.sort(function(a,b){ return a - b; }) console.log(arr3);//输出 [10, 30, 35, 45, 50, 111, 1899] var arr4 = [30,10,111,35,1899,50,45]; arr4.sort(function(a,b){ return b - a; }) console.log(arr4);//输出 [1899, 111, 50, 45, 35, 30, 10]
3.根据数组中的对象的某个属性值排序;
var arr5 = [{id:10},{id:5},{id:6},{id:9},{id:2},{id:3}]; arr5.sort(function(a,b){ return a.id - b.id }) console.log(arr5); //输出新的排序 // {id: 2} // {id: 3} // {id: 5} // {id: 6} // {id: 9} // {id: 10}
4.根据数组中的对象的多个属性值排序,多条件排序;
var arr6 = [{id:10,age:2},{id:5,age:4},{id:6,age:10},{id:9,age:6},{id:2,age:8},{id:10,age:9}]; arr6.sort(function(a,b){ if(a.id === b.id){//如果id相同,按照age的降序 return b.age - a.age }else{ return a.id - b.id } }) console.log(arr6); //输出新的排序 // {id: 2, age: 8} // {id: 5, age: 4} // {id: 6, age: 10} // {id: 9, age: 6} // {id: 10, age: 9} // {id: 10, age: 2}
-
vue push() pop() shift() unshift() sort() reverse() splice()
2020-03-09 16:18:17vue push() pop() shift() unshift() sort() reverse() splice() <dir id="app"> <ul> <li v-for="(book, index) in books">{{index + 1}} - {{book}}<...vue push() pop() shift() unshift() sort() reverse() splice()
<dir id="app"> <ul> <li v-for="(book, index) in books">{{index + 1}} - {{book}}</li> </ul> </dir> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script> <script type="text/javascript"> var vm = new Vue({ el: '#app', data: { books: [ 'java', 'vue' ] } }); //push()方法可向数组的末尾添加一个或多个元素,并返回新的长度。 vm.books.push('c', 'c#'); console.log(vm.books.length); //pop()方法用于删除并返回数组的最后一个元素。 var _pop = vm.books.pop(); console.log(_pop + " " + vm.books.length); //shift()方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。 var _shift = vm.books.shift(); console.log(_shift + " " + vm.books.length); //unshift()方法可向数组的开头添加一个或多个元素,并返回新的长度。 vm.books.unshift('js', 'hehe'); console.log(vm.books.length); //sort()方法用于对数组的元素进行排序。 vm.books.sort(); //reverse()方法用于颠倒数组中元素的顺序。 vm.books.reverse(); //splice(index,len,[item])它也可以用来替换/删除/添加数组内某一个或者几个值(该方法会改变原始数组) //index:数组开始下标 //len: 替换/删除的长度 //item:替换的值,删除操作item为空 vm.books.splice(1, 0, 'xyz'); //添加 console.log(vm.books); //["vue", "xyz", "js", "hehe", "c"] vm.books.splice(0, 1, 'aaa'); //替换 console.log(vm.books); //["aaa", "xyz", "js", "hehe", "c"] vm.books.splice(3, 1); //删除 console.log(vm.books); //["aaa", "xyz", "js", "c"] </script>
-
MATLAB中排序函数sort()的用法
2019-03-31 15:47:02MATLAB中排序函数sort()可以对参数的元素进行升序排序或降序排序。 具体的用法如下: Y=sort(X) sort()的参数可以是向量,矩阵,数组等等。当X是向量时,sort(X)对X的元素进行升序排序;当X是矩阵时,sort(X)对...MATLAB中排序函数sort()可以对参数的元素进行升序排序或降序排序。
具体的用法如下:
Y=sort(X)
sort()的参数可以是向量,矩阵,数组等等。当X是向量时,sort(X)对X的元素进行升序排序;当X是矩阵时,sort(X)对X的每一列进行升序排序;
>> A=magic(3) A = 8 1 6 3 5 7 4 9 2 >> sort(A) ans = 3 1 2 4 5 6 8 9 7
Y=sort(X,DIM,MODE)
参数DIM表示对哪一个维数进行排序,例如当X是一个二维矩阵,当DIM=1时表示对X的每一列进行排序,当DIM=2时表示对X的每一行进行排序。
参数MODE表示按哪一种模式进行排序,当MODE=‘ASCEND’的时进行升序排序,当MODE=‘DESCEND’时,进行降序排序。
Y返回已经排好序的X。
>> A=magic(3) A = 8 1 6 3 5 7 4 9 2 >> sort(A,2,'descend') ans = 8 6 1 7 5 3 9 4 2
有时我们还需要知道Y中的元素对应于原始序列X中的哪一个元素。于是我们可以用这个命令:
[Y,I] = sort(X,DIM,MODE)
I返回索引序列,它表示Y中的元素与X中元素的对应。
>> A=magic(3) A = 8 1 6 3 5 7 4 9 2 >> [B,I]=sort(A,1,'ascend') B = 3 1 2 4 5 6 8 9 7 I = 2 1 3 3 2 1 1 3 2
承接Matlab、Python和C++的编程,机器学习、计算机视觉的理论实现及辅导,本科和硕士的均可,咸鱼交易,详谈请联系QQ号757160542
-
C++ sort()排序详解
2020-05-05 22:00:36本文对C++中的sort()做了一个比较详细的说明,包括为什么选择使用sort()、sort()函数的实现原理、sort()的使用方法等等。sort()简介
为什么选择使用sort()
在刷题的时候我们经常会碰到排序的问题,如果我们不使用一些排序的方法那我们只能手撕排序,这样就会浪费一些时间。而且我们还需要根据需要去选择相关的排序方法:
冒泡排序、快速排序、插入排序、希尔排序、归并排序、选择排序、堆排序、基数排序、桶排序
。在选择的过程中也需要我们花费一些时间,所以在明白这些经典排序的情况下再一遍一遍的手写就有点浪费时间啦!
如果我们使用sort()
方法就可以只需要一条语句就可以实现排序,这样就极大的节省了我们在刷题中所花费的时间。当然如果对这些经典的排序方法不熟悉的话还是建议大家去了解一下这些方法,比较一下这些方法的优劣以及使用的情景。sort()函数的实现原理
也许你会疑问,我使用sort方法对数据进行排序就一定合适吗?sort()可以根据我的需要对数据进行排序吗?其实sort()函数还是一个比较灵活的函数。很多解释是:sort()函数是类似于快速排序的方法,时间复杂度为n*log2(n),执行效率较高。
其实STL中的sort()并非只是普通的快速排序
,除了对普通的快速排序进行优化,它还结合了插入排序和堆排序。根据不同的数量级别以及不同情况,能自动选用合适的排序方法。当数据量较大时采用快速排序,分段递归。一旦分段后的数据量小于某个阀值,为避免递归调用带来过大的额外负荷,便会改用插入排序。而如果递归层次过深,有出现最坏情况的倾向,还会改用堆排序。所以说sort()是一个比较灵活的函数,它也会根据我们数据的需要进行排序,所以我们就不用担心以上的问题了。对于大部分的排序需求,sort()都是可以满足的。sort()的使用方法
头文件
在C++中使用sort()函数需要使用
#include<algorithm>
头文件。algorithm意为"算法",是C++的标准模版库(STL)中最重要的头文件之一,提供了大量基于迭代器的非成员模版函数。该头文件的详细使用方法以及包含的函数请参考:C++API之algorithm。sort()基本使用方法
sort()函数可以对给定区间所有元素进行排序。它有三个参数
sort(begin, end, cmp)
,其中begin为指向待sort()的数组的第一个元素的指针
,end为指向待sort()的数组的最后一个元素的下一个位置的指针
,cmp参数为排序准则,cmp参数可以不写,如果不写的话,默认从小到大进行排序。如果我们想从大到小排序可以将cmp参数写为greater<int>()
就是对int数组进行排序,当然<>
中我们也可以写double、long、float等等。如果我们需要按照其他的排序准则,那么就需要我们自己定义一个bool类型的函数来传入。比如我们对一个整型数组进行从大到小排序:#include<iostream> #include<algorithm> using namespace std; int main(){ int num[10] = {6,5,9,1,2,8,7,3,4,0}; sort(num,num+10,greater<int>()); for(int i=0;i<10;i++){ cout<<num[i]<<" "; }//输出结果:9 8 7 6 5 4 3 2 1 0 return 0; }
自定义排序准则
上面我们说到sort()函数可以自定义排序准则,以便满足不同的排序情况。使用sort()我们不仅仅可以从大到小排或者从小到大排,还可以按照一定的准则进行排序。比如说我们按照每个数的个位进行从大到小排序,我们就可以根据自己的需求来写一个函数作为排序的准则传入到sort()中。
我们可以将这个函数定义为:bool cmp(int x,int y){ return x % 10 > y % 10; }
然后我们将这个cmp函数作为参数传入sort()中即可实现了上述排序需求。
#include<iostream> #include<algorithm> using namespace std; bool cmp(int x,int y){ return x % 10 > y % 10; } int main(){ int num[10] = {65,59,96,13,21,80,72,33,44,99}; sort(num,num+10,cmp); for(int i=0;i<10;i++){ cout<<num[i]<<" "; }//输出结果:59 99 96 65 44 13 33 72 21 80 return 0; }
对结构体进行排序
sort()也可以对结构体进行排序,比如我们定义一个结构体含有学生的姓名和成绩的结构体Student,然后我们按照每个学生的成绩从高到底进行排序。首先我们将结构体定义为:
struct Student{ string name; int score; Student() {} Student(string n,int s):name(n),score(s) {} };
根据排序要求我们可以将排序准则函数写为:
bool cmp_score(Student x,Student y){ return x.score > y.score; }
完整代码:
#include<iostream> #include<string> #include<algorithm> using namespace std; struct Student{ string name; int score; Student() {} Student(string n,int s):name(n),score(s) {} }; bool cmp_score(Student x,Student y){ return x.score > y.score; } int main(){ Student stu[3]; string n; int s; for(int i=0;i<3;i++){ cin>>n>>s; stu[i] = Student(n,s); } sort(stu,stu+3,cmp_score); for(int i=0;i<3;i++){ cout<<stu[i].name<<" "<<stu[i].score<<endl; } return 0; }
再比如每一个学生有四科成绩,我们需要根据学生的四科成绩的平均分高低进行排名,那么这个cmp函数我们就可以定义为:
bool cmp_score(Student x,Student y){ double average_x,average_y; average_x = (x.score[0]+x.score[1]+x.score[2]+x.score[3])/4; average_y = (y.score[0]+y.score[1]+y.score[2]+y.score[3])/4; return average_x > average_y; }
完整代码:
#include<iostream> #include<string> #include<algorithm> using namespace std; struct Student{ string name; double score[4]; }; bool cmp_score(Student x,Student y){ double average_x,average_y; average_x = (x.score[0]+x.score[1]+x.score[2]+x.score[3])/4; average_y = (y.score[0]+y.score[1]+y.score[2]+y.score[3])/4; return average_x > average_y; } int main(){ Student stu[3]; string n; int s; for(int i=0;i<3;i++){ cin>>stu[i].name; for(int j=0;j<4;j++){ cin>>stu[i].score[j]; } } sort(stu,stu+3,cmp_score); for(int i=0;i<3;i++){ cout<<stu[i].name<<" "; for(int j=0;j<4;j++){ cout<<stu[i].score[j]<<" "; } cout<<endl; } return 0; }
以上就是对于sort()用法的详解了。如果你觉得我的文章对你有用请点个赞支持一下吧,喜欢我写的文章那么请点个关注再走鸭,您的关注是对我最大的支持。如果此文章有错误或者有不同的见解欢迎评论或者私信。
我是ACfun:一个成长中的程序猿,感谢大家的支持。 -
Java中Collections.sort()排序详解
2016-08-17 09:49:54java List 排序 Collections.sort()Java 中 Comparable 和 Comparator 比较第一种:ComparableComparable 是排序接口。若一个类实现了Comparable接口,就意味着“该类支持排序”。 即然实现Compa -
Java中Collections.sort()的使用!
2017-12-08 16:38:39Java中Collections.sort()的使用!在日常开发中,很多时候都需要对一些数据进行排序的操作。然而那些数据一般都是放在一个集合中如:Map ,Set ,List 等集合中。他们都提共了一个排序方法 sort(),要对数据排序直接... -
sort()函数基本用法
2018-08-10 20:12:25C++sort()函数的用法 (一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法... -
sort()排序
2018-11-05 14:24:38sort()函数:对数组进行排序 sort()函数在algorithm头文件中,存储在std命名空间中。 sort()函数有三个参数:第一个是数组的起始地址;第二个是数组的结束地址;第三个是如何排序(从大到小或从小到大)。 例一:... -
java中Arrays.sort()的几种用法
2018-09-28 21:11:26Java的Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时,非常的好用。 但是sort()的参数有好几种,下面我就为大家一一介绍,这几种形式的用法。 ================================... -
浅谈Arrays.sort()原理
2019-04-10 00:29:57首先先来看一下Arrays.sort()使用的例子。 //注意一定要用Integer对象类 Integer[] a1 = {34, 57, 46, 89, 98, 12, 55, 84, 29}; Integer[] a2 = {34, 57, 46, 89, 98, 12, 55, 84, 29}; //增序,Arrays.... -
深入理解Arrays.sort()
2018-06-10 16:37:14深入理解Java 中的Arrays.sort()方法 Java的Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时,非常的好用。 但是sort()的参数有好几种,基本上是大同小异,下面是以int型数组为... -
【python】List sort()与torch.sort()
2019-10-14 21:56:47python的List sort与torch.sortList sort()torch.sort()trick List sort() 对列表进行排序,可先利用.numpy()转化为array,再利用list()转化为列表 使用方法list.sort(key=None, reverse=False) 参数解释 key ... -
list.forEach()、list.stream().filter()、list.sort()用法
2020-01-10 09:43:23有关list.forEach、list.stream.filter、list.sort用法有关list.forEach()、list.stream().filter()、list.sort()用法 有关list.forEach()、list.stream().filter()、list.sort()用法 @Test public void testList()... -
R语言中sort()函数和order()函数的区别
2018-03-25 22:30:58R语言中sort()函数和order()函数的区别 # sor()排序,排序结果不可逆转 # 默认是升序 # 注意,排序的某个字段--"总成绩" # decreasing为TRUE,表示降序 # decreasing为FALSE,表示升序 sort(cj$总成绩... -
Python3 排序 sort()、sorted()、sort(key=lambda)、sorted(key=lambda)
2019-09-07 12:02:26Python3 排序 sort()、sorted())、(sort(key=lambda)、sorted(key=lambda)) 初学者容易搞混,自己也是这两天整理一下网上搜到以及看到的资料,发表一下自己的拙见。 sort()和sorted()的区别 sort() 是对列表进行... -
Python字典排序 sort()、reversed()、sorted()、cmp()
2018-09-19 21:28:31深入Python(1): 字典排序 关于sort()、reversed()、sorted()、cmp()等 2014年05月08日 11:11:08 文宇肃然 阅读数:3982更多 个人分类: Python 一、最不沾边的cmp() cmp(x, y) Compare the two objects x... -
sort()、order()、rank()函数的区别
2019-05-03 19:21:50sort()、order()、rank()函数的区别 命令: x=c(1,10,3,6,5) x sort(x) #原列表的数字从小到大排序 x order(x) #原列表的数字从小到大排序,排序后列表的数字在原列表中的位置 x rank(x) #原列表的数字... -
pytorch(python)中遇到的问题(三)Python的.sort()方法和sorted()比较;Pytorch里addmm()和addmm_();...
2020-03-04 23:03:52文章目录1.Python的.sort()方法和sorted()比较1.1Python的.sort()方法1.2Python的sorted()方法2.Pytorch里addmm()和addmm_()3. torch.stack() 1.Python的.sort()方法和sorted()比较 1.1Python的.sort()方法 使用... -
R语言排序函数sort(),rank(),order()
2019-06-19 08:48:59在R中,和排序相关的函数主要有三个:sort(),rank(),order()。 sort(x)是对向量x进行排序,返回值排序后的数值向量。rank()是求秩的函数,它的返回值是这个向量中对应元素的“排名”。而order()的返回值是对应... -
javaScript sort() 的使用(利用sort实现多种限定下的比较排序)
2019-07-08 13:56:47javaScript sort() 的使用(利用sort实现多种限定下的比较排序) sort的排序规则 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。 若 a 等于 b,则返回 0。 若 a 大于 b,则返回... -
Matlab排序函数sort()和sortrows()
2019-12-31 09:53:18sort() 调用形式 1.Y=sort(X) 对矩阵、向量或数组进行升序排列。 例1 >> a=magic(4) a = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 >> b=rand(1,4) b... -
JS sort()排序及JS sort()双重排序
2018-03-20 22:06:09sort()方法用于对数组的排序,并返回数组。基本用法为:arr.sort();默认为升序排列。例:var arr = [5,3,1,6,4,3,2]; arr.sort(); // [1, 2, 3, 3, 4, 5, 6]如果想按照其他标准进行排序,sort()方法是可以传入一个... -
sort() 、sorted()和reverse()的区别
2018-11-17 16:33:17sort() 、sorted()和reverse()的区别 message=['e','d','b','c','a'] print(message) #永久排序 message.sort()#字母顺序排列 print(message) message.sort(reverse=True)#字母反向顺序排列 print(message) #... -
R语言排序三个基本函数:sort(),rank(),order()的用法
2020-06-15 14:06:54R语言排序三个基本函数:sort(),rank(),order()的用法 1、sort() 用法:sort(a,decreasing=T) 或 sort(a,decreasing=T) 其中,a为要排序的向量 # sort()排序,排序结果不可逆转 # 默认是升序 # decreasing为TRUE,... -
Python 排序函数sort()、sorted()、argsort()函数详解
2019-04-23 10:44:26sort()方法仅仅定义在list中,而sorted()方法是对所有的可迭代序列都有效,并且针对任何的可迭代序列,sorted()都是返回一个list。 sorted()函数-->举个例子: ls = list([1,5,2,9,3,8,4,6]) new_ls = ... -
R语言:sort(),rank(),order()三个排序函数
2019-06-09 13:38:55在R中,和排序相关的函数主要有三个:sort(),rank(),order()。 sort(x)是对向量x进行排序,返回值排序后的数值向量。rank()是求秩的函数,它的返回值是这个向量中对应元素的“排名”。而order()的返回值是对应... -
ArrayList()集合元素大小排序方法sort()使用
2017-03-19 08:30:27ArrayList()集合元素大小排序方法sort()如何使用的,需继承什么类么 -
sort()函数和sorted()函数的区别
2019-05-01 22:50:18#sort() 和 sorted()函数的区别 #sort只能应用在列表list上,sort方法会在原list上直接进行排序,不会创建新的list #sorted可以对所有可迭代的对象进行排序的操作,sorted方法不会对原来的数据做任何改动,排序后的... -
stable_sort()与sort()的用法区别
2017-02-07 16:42:17关于stable_sort()和sort()的区别:你发现有sort和stable_sort,还有 partition 和stable_partition, 感到奇怪吧。其中的区别是,带有stable的函数可保证相等元素的原本相对次序在排序后保持不变。或许你会问,既然... -
np.sort()函数的作用
2019-04-17 21:04:52np.sort函数的作用np.sort()函数的作用1.按行排序2.按列排序3.傻子才做选择,我都要!!! np.sort()函数的作用 np.sort()函数的作用是对给定的数组的元素进行排序 a:需要排序的数组 axis:指定按什么排序,默认...