c++ - 排序算法面试

标签 c++ c sorting

给定一个数字范围从 1 到 100 的大数组。排序它的最佳方法是什么?

面试官强调了“范围”这个词,即数组中存在的最大数量是 100。

最佳答案

试试这个:

long result[100] = {0};

for (iterator it = vec.begin(); it != vec.end(); ++it)
{
    result[*it - 1]++;
}

因此,您将在 vector 上线性移动并计算存在的所有数字。结果你会收到你有多少个 1,你有多少个 2 等等,即它会被排序。

UPD:正如 KillianDS 所写,我的意思是 counting sort 。这是最快的。

关于c++ - 排序算法面试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25482808/

相关文章:

java - 哈希集<点> : How to sort all points according to x coordinates?

c - 并行 QuickSort C 实现

javascript - 动态生成 div 时 div 排序不起作用

c++ - 使用 printf() 改变多线程结果?

c++ - 澄清任何声明中的评论

c - 如何知道指针数组中指针的长度是多少?

c - 使用 mmap 使 int 数组对子进程可见

c++ - 创建网格和启动窗口 SDL/GLEW C++ 时发生访问冲突

c++ - 在循环中顺序遍历成员变量

c - 通过三点A、B、C的坐标定义一个盒子