摘要: 题目:a)给定一个整数数组,其中不同的整数中包含的数字个数可能不同,但是该数组中,所有整数中总的数字数为n。说明如何在O(n)时间内对该数组进行排序b)给定一个字符串数组,其中不同的串包含的字符个数可能不同,但所有串中总的字符个数为n。说明如何在O(n)时间内对该数组进行排序(注意此处的顺序是指标准的字母顺序,例如,a < ab < b)思路:a)先用桶排序方法按数字位数排序O(n),再用基数排序的方法分别对每个桶中的元素排序O(n)b)递归使用计数排序,先依据第一个字母进行排序,首字相同的放在同一组,再对每一组分别使用计数排序的方法比较第二个字母见到有人用字典树,也是可以的代码: 阅读全文
posted @ 2012-06-23 15:14 windmissing 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 题目:如何在O(n)时间内,对0到n^2-1之间的n个整数进行排序思路:把整数转换为n进制再排序代码:#include <iostream>#include <cmath>using namespace std;int n, radix, length_A, digit = 2;void Print(int *A, int start, int end){ int i; for(i = start; i <= end; i++) { if(i == start)cout<<'{'; else cout<<' ' 阅读全文
posted @ 2012-06-23 11:27 windmissing 阅读(234) 评论(0) 推荐(0) 编辑