gpt4 book ai didi

c - 插入排序的实现

转载 作者:行者123 更新时间:2023-11-30 16:01:04 25 4
gpt4 key购买 nike

这是我的代码。

#include<stdio.h>
void insert(int member,int arr[],int size)
{
int i,j;
for(i=0;i<size;i++)
{
if(member<arr[i])
{

for( j=0;j<size-i;j++)
{
arr[size]=arr[size-1];
}
arr[i]=member;
break;
}
}
}
void insertsort(int arr[],int size)
{
int newsize=1,member;
for(newsize=1;newsize<size;newsize++)
{
member=arr[newsize];
insert(member,arr,newsize);
}
}
void main()
{
int arr[100];
int size,i;
printf("enter the size");
scanf("%d",&size);
printf("enter numbers");
for( i=0;i<size;i++)
{
scanf("%d",&arr[i]);
}
insertsort(arr,size);
for(i=0;i<size;i++)
printf("\n %d",arr[i]);
}

我不知道问题是什么,但进入时

元素数量:5;

输入数字 45 23 87 345 12

输出 12 45 87 345 345。

有人能告诉我问题出在哪里吗?

最佳答案

在插入函数中,更改 arr[size]=arr[size-1];arr[size-j]=arr[size-j-1]; .

当你进行插入时,我猜你想将插入点之后的所有数字向右移动 1 步,但你只移动了最右边的一个。

void insert(int member,int arr[],int size)
{
int i,j;
for(i=0;i<size;i++)
{
if(member<arr[i])
{
for( j=0;j<size-i;j++)
{
arr[size-j]=arr[size-j-1];
}
arr[i]=member;
break;
}
}
}

关于c - 插入排序的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7137385/

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