gpt4 book ai didi

C shellsorting 随机 int 数组

转载 作者:行者123 更新时间:2023-11-30 19:42:45 24 4
gpt4 key购买 nike

我在编写简单程序对随机数数组进行 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com