如何通过一个数组的已知字母顺序 对另外一个数组的字母进行排序
如何通过一个数组的已知字母顺序 对另外一个数组的字母进行排序,比如a = [q,w,e,a,s] 现在有数组b=[w,a,q] 要求排序变成[q,w,a] 谢谢大家的指点。
新世界的离群神
11 years, 7 months ago
Answers
具体实现 如@谢昌磊 所说, 对第一个数组做一个 map表 {字符 -> 下标}, 要比较第二个数组 两个元素的大小, 去查表 比较下标即可.
其实具体排序部分可以直接用库函数. 这里有一个pattern.
如c中的qsort(): http://www.cplusplus.com/reference/cs...
或者java的Arrays.sort(),
都只需给出 需排序的数组, 和 比较 数组元素大小的 回调函数即可.
compar(a, b) 和 Comparator.compare(a, b) 的 原理都是约定俗成的.
返回负数 表示 a排在b前, 0 表示相等, 正数 表示 a排在b后.
这里也是体现了程序设计的原则. 分离 不变的 和 变化的逻辑. 排序算法是固定的, 由库函数处理, 需排序的数组由用户提供, 数组元素的排序原则也由用户提供.
湯浅比呂美
answered 11 years, 7 months ago