问题标签 [counting-sort]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3082 浏览

string - 使用计数排序进行名称排序

我在使用计数排序按字母顺序对名称进行排序时遇到问题,例如,我想按字母顺序排序并添加数字输入0001 Alex Smith, Gregory John, Alex Smith, Adam Richard, Alex Ryan。输出应按以下顺序:

亚当·理查德·
亚历克斯·瑞恩·亚历
克斯·史密斯
格雷戈里·约翰

到目前为止我的代码:

0 投票
1 回答
1331 浏览

c - 试图理解计数排序的复杂性

阅读各种。在计数排序的情况下,下面的 C 代码可以正常工作,但我对它的时间复杂度有疑问。正如我在很多地方读到的那样,它并不是真正的 O(N),而是 O(输入数组的最大值 - 数组的最小值)。这可以大于 N。现在如果我们增加 N,同时增加 max - min(范围 - 即增加 max 并减少 min),那么运行时复杂度是否可以得到二次,即 O(N 2 ) 或否?或者对于这种排序来说,最坏的情况是输入数组有多个相同值的实例。不是很清楚试图理解。

假设我们已经计算了传递给counting_sort 的给定数组的最小值、最大值。n 是输入数组的长度

0 投票
7 回答
38441 浏览

algorithm - 基数排序 vs 计数排序 vs 桶排序。有什么不同?

我正在阅读基数、计数和桶排序的定义,似乎所有这些都只是下面的代码:

我知道我不可能是对的,所以我错过了什么?如果您认为这有助于用 Java 或 C 进行解释,请显示代码。

0 投票
1 回答
1089 浏览

c++ - 在计数排序算法中减少元素计数

我从伪代码实现了一个计数排序算法。在伪代码中,最终循环C[A[j]]在第一次通过后递减。这将所有内容都向右移动,因此我在第一次通过之前进行了调试和递减以产生正确的结果。但是除了它起作用之外,我看不到其他原因,为什么我必须在之前而不是之后递减。

这是我减量后的结果:

当我之前递减时:

显然,由于最初所有内容都向右移动,因此我将所有内容都向左移动,但是为什么一开始就不能正确对齐呢?

0 投票
1 回答
96 浏览

java - 以下计数排序程序有什么问题?

这是我的计数排序程序:

输入:

100
63 25 73 1 98 73 56 84 86 57 16 83 8 25 81 56 9 53 98 67 99 12 83 89 80 91 39 86 76 85 74 39 25 90 59 10 94 32 72 3 4 86 960 2 729 3 86 960 21 92 69 81 40 40 34 68 78 24 87 42 69 23 41 78 22 6 90 99 89 50 30 20 1 43 3 70 95 33 46 44 9 69 48 33 60 65 16 82 79 77 61 75 1 2 2 33

预期输出:

1 1 3 3 6 8 9 9 10 12 13 16 16 18 20 21 21 22 23 24 25 25 25 27 27 30 30 32 32 32 33 33 33 34 39 39 40 40 41 42 43 45 44 45 56 6 57 59 60 61 63 65 67 67 68 69 69 69 70 70 73 73 74 75 75 76 78 78 79 79 80 81 81 82 83 83 84 85 86 86 87 87 89 89 89 90 90 91 92 94 95 96 98 98 99 99

实际输出:

1 1 3 3 6 8 9 9 10 12 13 16 16 18 20 21 21 22 23 24 25 25 25 27 27 30 30 32 32 32 33 33 33 34 39 39 40 40 41 42 43 45 44 45 56 6 57 59 60 61 65 67 67 68 69 69 69 70 70 73 73 74 75 75 76 78 78 79 79 80 81 81 82 83 83 84 85 86 86 87 87 89 89 89 90 9 90 91 98 9 9 9 9 9 9 9 92

我得到的输出缺少一个数字63。我无法纠正这个问题。

0 投票
1 回答
837 浏览

c++ - C ++对结构的const指针数组进行排序

我有排序功能:

我省略了有关排序算法的细节,因为问题出在其他地方。问题是,声明arrayCopy.

在线

我收到此错误消息

声明中的用法一定有问题,const但我不知道如何解决它......

0 投票
2 回答
1735 浏览

c - 使用具有字母和数字的输入字符串进行计数排序

我不知道问题出在哪里。我认为我做得对,但在运行时它给出了这个错误“countingsort.exe 中 0x013814f5 处的未处理异常:0xC0000005:访问冲突写入位置 0x33562813。”。谁能建议我哪里出错了。

0 投票
1 回答
130 浏览

arrays - 对一个巨大的整数数组进行排序,每个整数由 10 位表示

对于这样的问题 - 如何对每个整数由 10 位表示的整数数组进行排序?我相信我们可以使用计数排序。但是如果我将问题稍微调整为每个项目是整数和字符串的组合,并且问题要求数组根据整数值进行排序,如何解决这个问题?

0 投票
2 回答
1544 浏览

arrays - 对一个 n 元素数组进行排序,使前 k 个元素按升序排列最低(就地算法)

这是一个我坚持的家庭作业问题。

我需要对一个 n 元素数组进行排序,以便前 k 个元素是最低的并且按递增顺序排列。对于 k <= n/log(n),算法应该是 O(n)。

我的解决方案:我想到的一个简单的解决方案是对数组进行 heapify (O(n))。然后删除 k 元素并将堆/数组的起始索引从 0 移动到 1 - 2 - 3(依此类推,一直到 k)。这将是 O(n+k*lg(n)+k*n) = O(kn+k*lg(n))。对于给定的 k 条件,它将是 O(n^2/log(n) + n)。

另一种可能的实现是使用基数排序,这将是 O(n),但我觉得这不是正确的解决方案,因为我将对整个数组进行排序,而他们只要求对 k 个元素进行排序。

您不必给我答案,只是提示会有所帮助。

0 投票
3 回答
1304 浏览

algorithm - 为什么我们不能将计数排序应用于一般数组?

如果我们知道数组中的所有元素都以给定数字为上限,则计数排序是线性时间的。如果我们取一个通用数组,我们不能只在线性时间内扫描数组,找到数组中的最大值然后应用计数排序吗?