使用Insertion Sort对数组进行排序

时间:2016-01-27 20:33:37

标签: c arrays sorting insertion

我的任务是编写一个函数naive_sort(),它将随机生成的整数数组作为参数并对它们进行排序。我需要使用Insertion Sort。我已经到了一个我不知道如何解决问题的地步,当我运行程序时没有任何反应。控制台保持空白。我对C编程很新,所以如果你在某个地方发现了一个愚蠢的错误,不要感到惊讶。任何帮助将不胜感激。

编辑:它正在输出一个数字列表,但它们没有被排序,输出示例:

558915997481717626
152655717476818999

这是我的代码(EDITED):

    #include <stdio.h>
#include<conio.h>
#include <stdlib.h>
#include <time.h>

//Insertion Sort function to Sort Integer array list
int *naive_sort(int array[],int n)
{
    int j,temp,i;

    //Iterate start from second element
    for (i = 1; i < n; i++)
    {
        j = i;
        //Iterate and compare till it satisfies condition
        while ( j > 0 && array[j] < array[j-1])
        {
            //Swapping operation
            temp = array[j];
            array[j]   = array[j-1];
            array[j-1] = temp;
            j--;
        }
    }
    //return Sorted array
    return array;
}

int main()
{
    //declaring variables
    int array[10],i;
    int n = 10;

    srand (time(NULL)); //initialize random seed
    for (i=0; i<n; i++)
    {
            array[i] = rand() % 100;
            scanf("%d",&array[i]);
    }
    for(i=0; i<n; i++)
    {
        printf("%d", array[i]);
    }
    printf("\n");


    //calling naive_sort function defined above and getting
    //sorted array in sortArray variable
    naive_sort(array,n);

    //print sorted array
    for(i = 0; i<n; i++ )
    {
        printf("%d",array[i]);
    }
    printf("\n");
    return 0;
}

1 个答案:

答案 0 :(得分:1)

您没有初始化本地变量n,代码中间有一个return个参数,您可以在第一个for循环中访问您的数组界限(因为<=100)。像这样调整你的代码:

#include <stdio.h>      // printf, scanf
#include <stdlib.h>     // srand, rand
#include <time.h>       // time 

int main()
{
    int array[100], i;
    int n = 100; // init n

    srand (time(NULL)); // initialize random seed
    for( i=0; i<n; i++ )
    {
        array[i] = rand() % 100; // replace this by scanf to read values from input
        // scanf("%d",&array[i]); 
    }
    for( i=0; i<n; i++ )
    {
        printf("%4d",array[i]);
    }
    printf( "\n" );

    naive_sort(array,n); // sort array

    for( i=0; i<n; i++ )
    {
        printf("%4d", array[i]);
    }
    printf( "\n" );
    return 0;
}

您的函数naive_sort按预期工作。