对字符数组进行排序

时间:2016-04-16 18:45:40

标签: arrays string algorithm sorting

以下是我的面试问题。

输入:一串字符(ASCII),可以是一个句子。可以重复。 输出:按ASCII值的顺序排序

预期的复杂性:线性时间和恒定的额外空间

我的想法是做一种类型的桶排序,你有一个256号数组,然后使用它,但如果你有重复,那么如何处理?这会被视为恒定的空间吗?我想这是因为你只使用256个大小的数组,并且它不会随着输入的大小而增长。

不想要我自己想要的特定代码,但任何提示都会有所帮助!

1 个答案:

答案 0 :(得分:1)

此问题的解决方案是counting sort

您将拥有一个128大小的数组,并且所有值都初始化为0.使用字符的ascii值索引到数组中,然后递增数组值。

仅通过遍历128的数组生成排序序列,其中只有在array [i]为非零时才打印ascii值i的字符,并且该值给出要打印的字符的频率。

你是对的这是恒定大小O(1)和线性时间O(N)算法。