加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 对100个元素的整数数组进行排序,其中只包含3个元素

发布时间:2020-12-16 10:32:09 所属栏目:百科 来源:网络整理
导读:假设我有一个包含100个数字的数组.数组中唯一不同的值是1,2和3.这些值在整个数组中随机排序.例如,可以将数组填充为: int values[100];for (int i = 0; i 100; i++) values[i] = 1 + rand() % 3; 我怎样才能有效地对这样的数组进行排序? 解决方法 最快的解
假设我有一个包含100个数字的数组.数组中唯一不同的值是1,2和3.这些值在整个数组中随机排序.例如,可以将数组填充为:

int values[100];

for (int i = 0; i < 100; i++)
    values[i] = 1 + rand() % 3;

我怎样才能有效地对这样的数组进行排序?

解决方法

最快的解决方案是不要“排序”:

>运行数组并计算1,2和3的出现次数.这些计数应该有希望适合寄存器……
>使用正确数量的1s,2s和3s填充数组,覆盖已有的数据.

最后,您将拥有一个完全排序的数组.

通常,当您与阵列的大小相比具有非常小的可能值范围时,这可以是有用的O(n)排序算法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读