#define RANGE 10000
int* sort(int* arr, int len) {
int* hashtable = new int[len];
memset(hashtable, 0, sizeof(int) * len);
for (int i = 0; i < len; ++i) {
hashtable[arr[i]]++;
}
return hashtable;
}
void printArrayFromHashTable(int* hash, int len) {
for (int i = 0; i < len; ++i) {
if (hash[i]) {
for (int j = 0; j < hash[i]; ++j) {
cout << i << ' ';
}
cout << endl;
}
}
}1万个元素的数组,90%的元素都是1到100的数,10%的元素是101--10000的数,如何高效排序。
最新推荐文章于 2022-05-08 20:40:43 发布
本文介绍了一种基于计数的排序算法实现方法,通过使用哈希表来统计数组中各元素出现的次数,进而完成排序。该方法适用于元素范围较小的情况,并详细展示了如何从哈希表中重建已排序的数组。
530

被折叠的 条评论
为什么被折叠?



