点击或拖拽改变大小

Functions.ASortT 方法 (__ArrayBaseT, Int32, Int32, FuncT, T, Boolean)

X#
对数组进行排序。

命名空间:  XSharp.RT
程序集:  XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法
 FUNCTION ASort<T>(
	aTarget AS ARRAY OF<T>,
	nStart AS LONG,
	nCount AS LONG,
	cbOrder AS Func<T, T, LOGIC>
)
 AS ARRAY OF<T>
查看代码

参数

aTarget
类型:__ArrayBaseT
要排序的数组。
nStart
类型:Int32
起始元素。
默认值为1。
nCount
类型:Int32
nStart 开始处理的元素数量。
默认为处理到数组末尾的所有元素。
cbOrder
类型:FuncT, T, Boolean
用于确定排序顺序的代码块。
此参数用于将排序顺序更改为降序或字典顺序。
每次评估时,目标数组中的两个元素都会作为参数传递。
如果元素按排序顺序排列,代码块返回 TRUE。请参见下面的示例。
默认排序顺序为升序:
低值元素排在数组开头(第一个元素)。
高值元素排在数组末尾(最后一个元素)

类型参数

T
The type of the array elements

返回值

类型:__ArrayBaseT
aTarget 的引用。
备注
ASort() 对数组的全部或部分进行排序。
数组可以包含混合类型的 USUAL。
可以排序的数据类型包括字符、日期、逻辑和数值。 字符串按 ASCII 顺序排序;逻辑值排序时 FALSE 为低值;日期值按时间顺序排序;数值按大小排序。 ASort() 不会直接对多维数组进行排序。
要对多维数组进行排序,您必须提供一个能正确处理子数组的代码块。
示例
此示例创建一个包含五个未排序元素的数组,先按升序排序,然后使用代码块按降序排序:
X#
1aArray := {3, 5, 1, 2, 4}
2ASort(aArray)                    // {1, 2, 3, 4, 5}
3ASort(aArray,,, {|x, y| x >= y})    // {5, 4, 3, 2, 1}
此示例对混合类型数组进行排序。
X#
1LOCAL  a := {"Z", "A", "one", 2, 1, "Three"}
2ASort(a)
此示例按升序对字符串数组进行排序,不区分大小写。
它通过使用在比较前将元素转换为大写的代码块来实现这一点:
X#
1aArray := {"Fred", "Kate", "ALVIN", "friend"}
2ASort(aArray,,, {|x, y| Upper(x) <= Upper(y)})    // {ALVIN, FRED, FRIEND, KATE}
此示例使用每个子数组的第二个元素对多维数组进行排序:
X#
1aKids := {{"Mary", 14}, {"Joe", 23}, {"Art", 16}}
2aSortKids := ASort(aKids,,, {|x, y| x[2] <= y[2]})    // {{"Mary", 14}, {"Art", 16}, {"Joe", 23}}
注意:
如果确定不会有重复值,可以在代码块中使用 < 和 > 运算符;否则, 更适合使用 <= 和 >=,因为它们可以正确处理重复值。
参见