插入排序给出了奇怪的输出
Insertion Sort is giving bizarre output
我写了一个插入排序程序,但它没有正确排序输入。请帮我找出程序中的错误。
如果我的输入是 1 2 3 10 -1 -2 -3
那么输出是
Value of a[0] is 1
Value of a[1] is 2
Value of a[2] is 3
Value of a[9] is -1
Value of a[10] is -2
Value of a[11] is -3
Value of a[19] is 10
不知道我的逻辑对不对,也不知道哪里做错了,请大家帮我找出程序中的错误。
#include<stdio.h>
void looper(int *);
void sort(int *,int *);
int main()
{
int a[25];
for(int i=0;i<=24;i++)
{
printf("Enter the value of a[%d] : ",i);
scanf("%d",&a[i]);
}
looper(a);
for(int i=0;i<=24;i++)
{
printf("Value of a[%d] is %d\n",i,a[i]);
}
}
void looper(int *p)
{
for(int i=1;i<=24;i++)
{
for(int j=(i-1);j>=0;j--)
{
sort((p+i),(p+j));
}
}
}
void sort(int *a,int *b)
{
int tmp;
if((*a)<(*b))
{
tmp=*a;
*a=*b;
*b=tmp;
}
}
你目前的方法是......不太正确,对于任何一种排序。插入排序会将一个元素插入到正确的索引处,然后将已经插入的项适当地向下移动。像
void looper(int *p)
{
for (int i = 1;i < 25;i++)
{
int key = p[i];
int j = i - 1;
while (j >= 0 && p[j] > key)
{
p[j + 1] = p[j];
j = j - 1;
}
p[j + 1] = key;
}
}
我写了一个插入排序程序,但它没有正确排序输入。请帮我找出程序中的错误。
如果我的输入是 1 2 3 10 -1 -2 -3
那么输出是
Value of a[0] is 1
Value of a[1] is 2
Value of a[2] is 3
Value of a[9] is -1
Value of a[10] is -2
Value of a[11] is -3
Value of a[19] is 10
不知道我的逻辑对不对,也不知道哪里做错了,请大家帮我找出程序中的错误。
#include<stdio.h>
void looper(int *);
void sort(int *,int *);
int main()
{
int a[25];
for(int i=0;i<=24;i++)
{
printf("Enter the value of a[%d] : ",i);
scanf("%d",&a[i]);
}
looper(a);
for(int i=0;i<=24;i++)
{
printf("Value of a[%d] is %d\n",i,a[i]);
}
}
void looper(int *p)
{
for(int i=1;i<=24;i++)
{
for(int j=(i-1);j>=0;j--)
{
sort((p+i),(p+j));
}
}
}
void sort(int *a,int *b)
{
int tmp;
if((*a)<(*b))
{
tmp=*a;
*a=*b;
*b=tmp;
}
}
你目前的方法是......不太正确,对于任何一种排序。插入排序会将一个元素插入到正确的索引处,然后将已经插入的项适当地向下移动。像
void looper(int *p)
{
for (int i = 1;i < 25;i++)
{
int key = p[i];
int j = i - 1;
while (j >= 0 && p[j] > key)
{
p[j + 1] = p[j];
j = j - 1;
}
p[j + 1] = key;
}
}