【发布时间】:2019-01-08 08:38:25
【问题描述】:
假设我有一个包含以下数字的 int 切片:2781,4706,1347,1192,3087,2920,198,2312,930,3284,1677,3687,2011,4107,4148,4195,2159,1263, 2918,2503
我想根据它们与某个值的距离来对它们进行排序。 例如,假设我的值为 1200。
排序后我的切片为:1192,1263,1347,1677,2011,2159,2312,2503,2781,2918,2920,3087,3284,3687,4107,4148,4195,4706,930,198
我尝试了遍历数组的方法,减去我指定的值,然后按升序排序,最终再次添加该值以返回我的原始数字。这种方法不适用于所有测试用例,而且我知道它是不好的做法,因为我正在改变数组。
【问题讨论】:
-
我认为最好的办法是编写一个满足
sort.Interface类型的自定义类型。更多信息在package documentation。 -
注意,930 距离 1200 并不远,它应该在排序数组的末尾。我将在下面发布完整的解决方案。