- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在编写简单程序对随机数数组进行 shellsort 时遇到了问题。程序不会对它进行排序,只是打印 1,1,1,1,1 或 0,0,0,0,0,即使 shellsort 算法来自 Rosettacode,所以它应该是正确的。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void shell_sort (int *a, int n) {
int h, i, j, t;
for (h = n; h /= 2;) {
for (i = h; i < n; i++) {
t = a[i];
for (j = i; j >= h && t < a[j - h]; j -= h) {
a[j] = a[j - h];
}
a[j] = t;
}
}
}
int main ()
{
int i;
int array[100000];
srand(time(NULL));
for (i = 0; i < 100000; i++)
{
array[i] = rand() % 1000 + 1;
}
for (i = 0; i < 5; i++)
printf("%d%\n", array[i]);
shell_sort(array, 100000);
for (i = 0; i < 5; i++)
printf("%d%\n", array[i]);
return 0;
}
最佳答案
您的程序在我的系统中的输出是:
9476第444章第792章96711111
另一个实例给出输出:
665第777章第481章26921511111
所以,你可以猜测生成的随机数一定有很多。
但是,如果我更改您的这段代码:
for (i = 10; i < 10005; i++)
printf("%d\n", array[i]);
shell_sort(array, 100000);
for (i = 10; i < 1005; i++)
printf("%d\n", array[i]);
输出为:
88888888888888888888888888888888888888888888888888888888888888888888888888888888888999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010
问题不在于算法,而在于生成随机数的方式。
我只是进一步更改此行,
for (i = 0; i < 100000; i++)
{
array[i] = rand() + 1; // Removed the modulus
}
输出是:
228228228229229229229229229230230230第232章第232章第232章233233234234236236236236第237章第237章第237章第237章第237章第237章238238238238239239239240240第241章第241章第241章第241章第241章第242章第242章第242章243244245245245245245245245246246248248248249249249249250250250250250250第251章第251章第252章第253章第253章第253章第253章第253章第254章第254章255256256第257章第257章第257章第257章第259章第259章260260261261261261262262262262263264264264265265265266266266266266266第267章第267章第267章第267章第267章第267章268268269269269269270270270270第271章第272章第272章第272章273273273274275275275275276276第277章第277章第277章第277章第277章第277章第279章第279章第279章第279章第279章280280280280280280280280280第281章第281章第281章第281章第282章第282章第283章第283章第284章第284章第284章第285章第285章第285章第286章第286章第287章第287章第287章第287章第287章288第289章第289章第289章第289章第289章290290第291章第291章第292章第292章第292章293293293294294294295295295295295296296第297章第297章298298298298298299299299299300300300300300301301303303303304304304305305305305306306307308308309310310310311311311311第312章第312章第312章313314314314314316316316316316316第317章第317章第317章第317章第317章第317章318第319章第319章第319章第319章320320321321321第322章第322章第322章第322章第326章第326章第326章第326章第326章第327章第327章第327章328328第329章329
所以,一切都很好。只需以更好的方式使用随机数即可。
关于C shellsorting 随机 int 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30965184/
尝试根据用户关注者的数量对推文对象进行排序。数据和对象键是从 mysql 数据库自定义的,其中包含我一直在为应用程序构建收集的数据。我有一个名为 dstore 的数组,包含如下所示的各个对象: # {
我想自己实现 shellsort 而不是在线复制粘贴那些,如果有人能帮助我找到错误并改进我愚蠢的 lil 代码,我将不胜感激我会把我的代码放在下面 #include #include using
我在编写简单程序对随机数数组进行 shellsort 时遇到了问题。程序不会对它进行排序,只是打印 1,1,1,1,1 或 0,0,0,0,0,即使 shellsort 算法来自 Rosettacod
我需要一种在 C# 中使用 ShellSort 对数组进行排序的简单方法,请帮助我 最佳答案 使用 shell 排序。 关于c# - 类作业 - C# 中的 shellsort?,我们在Stack O
这段代码是由 Ritchie 用 ANSI C 编写的......我在这段代码中使用了我怀疑的注释。我还从 youtube 上学习了 shell 排序,并理解了它实际上是如何工作的,但是这段代码非常令
对于两种不同的排序,我有两个实现,InsertionSort 和 ShellSort。 它们如下: 插入排序: for (int pos = 0; pos 0; secondMarker--) {
void shellsort(int v[], int n) { int gap, i, j, temp; for (gap = n/2; gap > 0; gap /= 2)
我正在尝试将 C 函数转换为 32 位 NASM。 这是 C 函数 void shellsort (int *A, int n) { int gap, i, j, temp; for
有人可以提供一个使用 Knuth 序列的 Java shellsort 的简单工作示例吗?我在互联网上查看了几个地方,但找不到适合我的解释。我在概念层面上理解 shellsort - 因为它是一种插入
简介 Shellsort 是我不久前遇到的一种有趣的排序算法。最神奇的是,不同的空位序列可以显着提高算法的速度。我读了一些书(没有广泛阅读),似乎 Tokuda 的序列被推荐用于实际应用。 另一个有趣
我正在编写一个程序来对数字数组执行 shellsort。我首先必须生成将执行 shellsort 的数字序列。该函数用于生成 2^p*3^q 形式的数字,该数字小于要排序的数组的长度。然后我对刚刚生成
我试图理解 K&R 书中第 62 页的 ShellSort 代码。但有一部分我不确定。 下面是书中的原始代码: void shellsort(int* v, int n) { int gap,
以下是来自普林斯顿的 coursera 算法类(class)的练习。 如果一个数组既是 3 次排序又是 5 次排序,那么它是否也是 6 次、7 次、8 次、9 次和 10 次排序?我知道任何序列如果先
我是一名优秀的程序员,十分优秀!