c - 为什么我的随机数组和排序程序不工作?

标签 c arrays sorting random insertion-sort

我尝试查找类似的问题,但似乎没有找到任何可以解决我的问题的方法。

我需要编写一个程序来生成随机数数组并通过插入排序 对它们进行排序。数组的实际随机性并不那么重要;重要的是代码本身生成它们。我读了here rand() % n+1 足以满足我生成 1 到 n 之间数字的需要。

我的程序的代码是:

/*
 * Task 1, question e
 */
#include <stdio.h>
#include <stdlib.h>

//Random Array Length
#define L 10
#define MAX 100

void naive_sort(int[]);

int main(){

    int i, a[L];

    //Generate an array of random numbers
    for(i=0; i<L; i++)
        a[i]= rand() % (MAX+1);

    //Unsorted Array
    printf("\nUnsorted array: ");
    for(i=0; i<L; i++)
            printf("%d    ", a[i]);

    //Sorted Array
    naive_sort(a);

    return 0;
}

void naive_sort(int a[]){
    int i, j, t;

    for(i=1; i < L; i++){
        t=a[i];
        j=i-1;
        while((t < a[j]) && (j >= 0)){
            a[j+1] = a[j];
            j--;
        }
        a[j+1]=t;
    }

    printf("\nSorted array: ");
    for(i=0; i<L; i++)
        printf("%d    ", a[i]);
}

该算法似乎只是在重复一些数字,根本不对列表进行排序。

Output

非常感谢任何对此问题的帮助,我什至尝试过 duck debugging但这似乎也不起作用!

最佳答案

在我的 PC [kubuntu, g++] 上你的代码可以工作。

在你的程序中加入一些打印语句可以帮助你。 您应该调用插入排序的排序路由函数。

乔治·弗斯

关于c - 为什么我的随机数组和排序程序不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35121022/

相关文章:

javascript - 使用 map 函数从包含数组的对象创建一个数组

android - 如何使用/Android Studio/Kotlin 访问 Firebase Firestore 中的数组字段?

sorting - mapreduce 分区内的数据是否已排序,如果是,它是如何发生的?

Java 8 Collections.sort(有时)不对 JPA 返回列表进行排序

c - 如何在另一个进程中调用函数(C,Linux)

c - 既然我们有 snprintf,为什么我们没有 snscanf?

c - <long>/<long>与<int>/<int>的区别

arrays - Bash:计算关联数组中键的总数?

javascript - JQuery UI 拖放和排序

c - 使用 float 和 double 时,c 中的 -0.0000 是什么?