繁体   English   中英

Array.Sort()的工作原理

[英]Working Principle of Array.Sort()

我有一个输入数组定义如下:

  string[] inputArray = { "a", "s", "d", "f", "g", "2", "3", "34", "4", "4", "y", "a", "f", "8", "h", "m" };

当我对此数组执行排序时,我得到的输出为:

{"2","3","34","4","4","8","a","a","d","f","f","g","h","m","s","y"}
  1. 为什么数字出现在字母之前?

  2. Array.Sort()是否对ASCII代码的基础进行排序(ascii数字代码低于字母)?

  3. 如果数组由特殊字符和字母数字组成,如何定义排序顺序?

因为Array.Sort 使用默认比较器进行排序。 并且该比较器将根据当前文化比较两个字符串(请注意,当双方都是字符串时,比较器具有故障转移机制)。 这通常会根据他们的字符代码进行比较,然后数字会出现在字母之前。

字符串在所谓的字典顺序中进行比较,这意味着您要比较两个第一个字符,如果相等则比较接下来的两个字符,依此类推。 如果其中一个字符串在另一个字符串之前结束,则它首先出现。

确实比较了两个字符的数值,通常是ASCII。 在ASCII表中,控制字符(不可打印)首先出现,然后是数字,大写字母,小写字母和这些组之间的特殊字符。

它的逻辑基于IComparable接口。 因此,sort方法使用的默认实现更喜欢数字到字母表。

第二:它完全基于IComparable接口,你可以在这里看到文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM