【发布时间】:2015-09-07 00:47:26
【问题描述】:
我在编写简单的程序以 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;
}
【问题讨论】:
-
您生成了 100,000 个 1 - 1000 范围内的随机数,然后只查看前五个。其中前 100 个可能都是 1。首先尝试使用包含 10 个数字的列表的代码。
-
@koper 我已经说明了蜥蜴比尔所说的话。应该有用:)