一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间

200 => count[200]++

300 => count[300]++

119 => count[119]++

0 => count[0]++

6 => count[6]++

最后,遍历一边所有这些数字就可得到0~65535每个数字的个数(在count数组中),,然后再顺序遍历count数组,count[n] = m,则输出m个n,(比如说有count[3] = 2, 那么说明有2个数字3),依次输出,最后可得结果。第一次遍历是O(n),第二次遍历是O(1),为常量,所以最后的时间复杂度为O(n),而空间复杂度为O(1)

这个算法很简单,相信大家都会,只是这个题太过于变态了,一般会把面试者吓住(我原来面试也出过这个题,只不过题目的表述形式要“友善”的多,呵呵)

要温暖还是怕麻烦。

一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间

相关文章:

你感兴趣的文章:

标签云: