相关疑难解决方法(0)

一次按行长度和字母顺序对字符串数组进行排序

我见过用其他几种语言提出这个问题,每种语言都有很好的答案。IE

如何按行长度对文件进行排序,然后按字母顺序对第二个键进行排序?

如何按字符串长度按字母顺序排序?

按字母顺序和长度对字符串进行排序?

我无法在 Golang 中弄清楚:/假设我有这个列表:

2 22 2H 2J 2J2 2J3 2J322422 2J322423 2J33 2M 2P 2W 2X
Run Code Online (Sandbox Code Playgroud)

我希望排序后的输出为:

2 22 2H 2J 2M 2P 2W 2X 2J2 2J3 2J33 2J322422 2J322423
Run Code Online (Sandbox Code Playgroud)

我在 Golang 中尝试了一些东西,但就是无法让它工作。

// Log
t.Log.Println(values)

// Sort values alphabetically
sort.Strings(values)

// Sort values by length
sort.Slice(values, func(i, j int) bool {
    return len(values[i]) < len(values[j])
})

// Log
t.Log.Println(values)
Run Code Online (Sandbox Code Playgroud)

sorting arraylist go slice

4
推荐指数
1
解决办法
2082
查看次数

当未提供 --stable 选项时, sort -n 是否可预测地处理关系?如果有,怎么做?

这里看起来像3在两行之后的空格打破了数字排序并让字母排序开始,所以11< 2

$ echo -e '3 2\n3 11' | sort -n
3 11
3 2
Run Code Online (Sandbox Code Playgroud)

man sort,我读

       -s, --stable
              stabilize sort by disabling last-resort comparison
Run Code Online (Sandbox Code Playgroud)

这意味着没有 -s一个不得已的比较完成(之间的关系,因为-s不影响非关系)。

所以问题是:这种最后的比较如何完成的?如果有必要回答问题,欢迎参考源代码。

这个答案 Unix从实验中推断出关系的排序是按字典顺序排列的。

标准/POSIX 是否对此有任何说明?

sorting bash lexicographic stable-sort language-lawyer

2
推荐指数
1
解决办法
68
查看次数