Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 基于字符串的选择排序_Sorting_Selection - Fatal编程技术网

Sorting 基于字符串的选择排序

Sorting 基于字符串的选择排序,sorting,selection,Sorting,Selection,选择排序如何处理字符串?我做了一些搜索,似乎找不到确切的答案。如果我有4个名字[罗布,亚当,汤姆,托马斯]-一个选择如何排序,排序这些?它会仅仅按照第一个字母排序吗?如果是这样的话,它会像下面这样排序:[亚当,罗布,托马斯,汤姆] 谢谢。所有排序算法都使用某种比较函数来确定元素的顺序。它通常独立于您选择的特定排序算法 大多数语言试图猜测比较函数,这取决于排序数据的类型。例如,数字比较只是检查哪个数字更大。字符串上的比较函数用于比较连续字母。一些示例GT-大于,LT-小于: 比较数字: >

选择排序如何处理字符串?我做了一些搜索,似乎找不到确切的答案。如果我有4个名字[罗布,亚当,汤姆,托马斯]-一个选择如何排序,排序这些?它会仅仅按照第一个字母排序吗?如果是这样的话,它会像下面这样排序:[亚当,罗布,托马斯,汤姆]


谢谢。

所有排序算法都使用某种比较函数来确定元素的顺序。它通常独立于您选择的特定排序算法

大多数语言试图猜测比较函数,这取决于排序数据的类型。例如,数字比较只是检查哪个数字更大。字符串上的比较函数用于比较连续字母。一些示例GT-大于,LT-小于:

比较数字:

> compare 1 2
LT
信件:

> compare 'R' 'A'
GT
字符串它在内部比较字母,想想如何:

> compare "Rob" "Adam"
GT
排序函数在内部使用这种比较[1,2,3]是一个由三个数字组成的列表。您不知道内部使用的是哪种排序算法,但只要使用相同的比较函数,结果就不会发生变化:

> sort [3,1,2]
[1,2,3]

> sort ['t', 'h', 'o', 'm', 'a', 's']
['a', 'h', 'm', 'o', 's', 't']

> sort ["Rob", "Adam", "Tom", "Thomas"]
["Adam","Rob","Thomas","Tom"]
您甚至可以定义自己的比较函数,按照更复杂的标准进行排序:

按素数因子计数对数字列表进行排序

第一个自定义比较函数:

> numOfPrimeDivs 30
3

> numOfPrimeDivs 6
2

> let compareNumOfPrimeDivs n1 n2 = compare (numOfPrimeDivs n1) (numOfPrimeDivs n2)) 

> compareNumOfPrimeDivs 30 6
GT

> sortBy compareNumOfPrimeDivs [2,210,30,2310,6]
[2,6,30,210,2310]
 > length "Rob"
 3

 > length "Adam"
 4

 > let compareLength s1 s2 = compare (length s1) (length s2)

 > compareLength "Rob" "Adam"
 LT

 > sortBy compareLength ["Rob", "Adam", "Tom", "Thomas"]
 ["Rob","Tom","Adam","Thomas"]    
按字符串长度排序

比较功能:

> numOfPrimeDivs 30
3

> numOfPrimeDivs 6
2

> let compareNumOfPrimeDivs n1 n2 = compare (numOfPrimeDivs n1) (numOfPrimeDivs n2)) 

> compareNumOfPrimeDivs 30 6
GT

> sortBy compareNumOfPrimeDivs [2,210,30,2310,6]
[2,6,30,210,2310]
 > length "Rob"
 3

 > length "Adam"
 4

 > let compareLength s1 s2 = compare (length s1) (length s2)

 > compareLength "Rob" "Adam"
 LT

 > sortBy compareLength ["Rob", "Adam", "Tom", "Thomas"]
 ["Rob","Tom","Adam","Thomas"]