当前位置: 首页 > 知识库问答 >
问题:

C外壳排序随机int数组

车嘉实
2023-03-14

我在编写简单的程序对随机数组进行shellsort时遇到了一个问题。程序不对它排序,只是打印1,1,1,1,1或0,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;
}

共有1个答案

金承嗣
2023-03-14

你的程序在我的系统中的输出是:

94 76 444 792 967 1 1 1 1 1

另一个实例给出输出:

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]);
 for (i = 0; i < 100000; i++)
    {
        array[i] = rand() + 1;  // Removed the modulus
    }

输出为:

228 228 228 229 229 229 229 229 229 229 229 230 230 232 232 232 233 234 234 236 236 236 237 237 237 237 237 238 238 238 239 239 239 240 240 241 241 241 242 242 245 245 245 245 245 249 249 249 249 250 250 250 250 251 251 252 253 253 253 253 255 256 257 257 257 259 259 260 260 261 261 261 262 262 262 263 263264 264 264 265 265 265 266 266 266 266 266 266 267 267 267 267 267 267 267 267 267 267 267 267 269 269 269 269 269 269 279 279 272 272 272 273 275 277 277 277 277 277 279 279 279 279 279 280 280 280 280 280 280 281 281 281 282 282 285 285 287 287 287 289 289 289 289 289 290 290 291 291 292 292 292 29 2 293 293 293 294294 294 295 295 295 295 295 296 296 296 297 298 298 298 298 299 299 299 299 299 300 300 300 300 301 301 303 303 304 304 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305 305

所以,一切都很好。只是用更好的方法来使用随机数。

 类似资料:
  • 本文向大家介绍javascript数组随机排序实例分析,包括了javascript数组随机排序实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript数组随机排序实现方法。分享给大家供大家参考。具体如下: 我们就测试0-9的随机排序,先生成数据 正常排序后的数组元素:0,1,2,3,4,5,6,7,8,9 定义一个随机函数,随机返回正数或者负数,sort函数将根据随机返

  • 随机排列指定数组的值,返回一个新的数组。 使用 Fisher-Yates 算法 对数组元素进行重新排序。 const shuffle = ([...arr]) => { let m = arr.length; while (m) { const i = Math.floor(Math.random() * m--); [arr[m], arr[i]] = [arr[i],

  • 问题内容: 为了从Sql查询中以随机顺序获取结果,我通常按新的Guid进行排序。我之前已经使用Entity- Framework完成了此操作,但是由于某种原因,它现在无法正常工作。 例如(使用Adventureworks2008r2数据库),我在LinqPad中运行以下查询: 这将生成以下SQL: 那么我的orderby查询发生了什么? 我通过以下查询进一步迈出了这一步,发现它只被调用了一次。 这

  • 问题内容: 我一直在谷歌上寻找答案,但似乎找不到一个万无一失的东西,而且真的负担不起将其弄乱(进入生产站点)。 我所拥有的是具有20多个过滤器的高级搜索,它返回一个包含ID和Distance的数组。我需要做的是将这些结果混洗以每次随机显示。目前我得到的数组是: 我需要做的是每次都对它们进行随机化或排序,但要保持id和距离对,即: 谢谢 :) 问题答案: 在第一个用户后下的文件: 在保留键,值对的同

  • 我一直找不到任何关于这个的问题,我想我想弄清楚这个有点疯狂。 我有以下代码: 这是超级基本的,对吧?根据手册页,第一个参数是指向基本元素的指针,第三个参数是大小。但是,我无法将数组作为排序结果。我仍然很困惑qort的第一个和第三个参数应该是什么,因为我怀疑这就是故障所在。 感谢您的帮助。 谢谢 编辑:我应该补充一点,这段代码显然没有错误检查,而且我试图使用双指针整数数组测试qort,所以虽然是的,

  • 问题内容: 我正在使用这个简单的查询来对ms-access数据库使用随机排序: 当我使用Microsoft Access 2010测试它时,它工作正常 但是,当我使用经典asp调用此查询时,随机排序不起作用。 这是我的代码: 问题答案: 您只需要对随机生成器“加盐”即可: