我的任务是编写一个函数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;
}
答案 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
按预期工作。