如何“正确”的回答一个算法问题
对一组数据进行排序:
1、这组数据有什么样的特征?
• ①有没有可能包含有大量重复的元素?
如果有这种可能的话,三路快排是更好的选择(Java种快排的基本实现就是使用三路快排)。
• ②是否大部分数据距离它正确的位置很近?是否近乎有序?
如果是这样的话,插入排序是更好的选择(如对银行的业务按照业务发生的时间进行排序,大多数业务先发生也先结束,少数处理的业务先发生但是处理时间较长后结束)。
• ③是否数据的取值范围非常有限?比如对学生成绩排序(对高考成绩进行排序,0-700)。
如果是这样的话,计数排序是更好的选择。
2、对排序有什么额外的要求?