您的位置:首页 > 其它

如何对n个大小都小于100的整数进行排序,要求时间复杂度O(n),空间复杂度O(1)。

2017-01-14 12:09 507 查看
提示:hash表

#include <iostream>
using namespace std;

#define N 100
#define RANGE 100

int* getRandomArray() {
int* randomArr = new int
;
srand(unsigned(time(0)));
for (int i = 0; i < N; i++) {
randomArr[i] = rand() % 99 + 1;
}
return randomArr;
}

void prinfArray(int* sortCount, int len) {
for (int i = 0; i < len; ++i) {
for (int j = 0; j < sortCount[i]; ++j) {
cout << i << " ";
}
if ((i + 1) % 10 == 0) {
cout << endl;
}
}
}

int main() {
int* src = getRandomArray();

//记录出现次数,再还原,RANGE为常数则,空间复杂度O(1)
int* sortCount = new int[RANGE];
memset(sortCount, 0, sizeof(int) * RANGE);

for (int i = 0; i < N; ++i) {
sortCount[src[i]]++;
}
prinfArray(sortCount, RANGE);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐