gpt4 book ai didi

c - 使用插入排序对数组进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 23:45:12 25 4
gpt4 key购买 nike

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

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

558915997481717626
152655717476818999

这是我的代码(已编辑):

    #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;
}

最佳答案

您没有初始化局部变量 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按预期工作。

关于c - 使用插入排序对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35047470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com