跳到主要内容

排序函数用法

排序操作基于一个或多个属性对数组中一系列的元素进行排序,下表展示了对一系列数字执行按升序排序操作的结果。

排序前51423
排序后12345

在触发中,可以使用排序函数对一个数组进行排序,具体的触发语句如下:

在比较函数为default(默认)的前提下,数组元素会按升序排序。

使用比较函数进行排序

比较函数是一种用于确定元素之间顺序的函数,通常用于排序或其他需要比较元素的操作。

在星火编辑器中,比较函数可以使用匿名函数执行自定义排序规则,且该匿名函数的返回值为一个数值(比较值)。设被比较的两个元素为 a 和 b,返回语句中 a - b 为升序,b - a 为降序。

以数值数组的降序排序为例,方法如下:

  1. 将比较函数换成立即值-匿名函数
  2. 如图,添加返回值:参数_2 - 参数_1

有的比较函数的返回值是布尔值(比如排行榜自定义比较函数等),在这种情况下,升序排序的写法为:返回参数_1 < 参数_2。

比较函数原理

下面用两个参数 (a, b) 简单讲解比较函数的原理:

在排序过程中,会经常比较两个数据的大小。默认情况下,如果 a > b,则交换两个数据的位置。经过若干次交换后,该数组是升序排列的。

根据数学知识可以得出,a > b 等价于 a - b > 0。而 a - b 这个式子又可以换成:比较 a 和 b 的值,返回一个数值。这就是比较函数。

比较函数有如下的性质:如果返回值小于零,表示第一个元素应该排在第二个元素之前。如果返回值大于零,表示第一个元素应该排在第二个元素之后。如果返回值等于零,表示两个元素相等。

复杂数据的排序

下面是两个复杂数据排序的例子:

字符串升序排序

星火编辑器提供了专门的字符串比较函数。若两个字符串相等则返回0;若左边字符串大于右边则返回1;反之返回-1。

下面是用字符串比较函数进行字符串排序的示例:

输出结果:
A
B
C
D
E

自定义类排序

该案例中创建了一个自定义类,拥有姓名(字符串)、年龄(数值)两个字段。

排序规则为:先按照年龄降序排序,再按照姓名升序排序.

输出结果:
C 32
A 30
B 30