我不知道这是怎么回事。
如果输入:4,56,5,2,则显示的输出为:2,4,0,1304。
如果输入:27,54,43,26,2,则显示的输出为:2,26,0,1304,0
如果输入:34,87,54,4,34,则显示的输出为:4,34,0,1304,0
基本上,在输出中仅显示前两个已排序的编号,而在其他位置,对于任何一组输入都显示1304或0。
#include <conio.h>
#include <stdio.h>
void main()
{
int a[10],b[10];
int i,size,j,k;
clrscr();
printf("please tell how many nos you want to enter");
scanf("%d",&size);
printf("Enter the nos");
for (i=0;i<size;i++) scanf("%d",&a[i]);
b[0]=a[0];
//insertionSort algo ---->
for (j=1;j<size;j++)
{
for (k=j-1;k>=0;k--)
//handling comparision with b[0]
if (k==0&&(a[j]<b[0])) {
b[1]=b[0];
b[0]=a[j];
}
//handling comparison with b[1:size-1]
if (k>0&&(a[j]<b[k])) { b[k+1]=b[k]; }
if (k>=0&&(a[j]>=b[k])) { b[k+1]=b[k]; break; }
}
for (i=0;i<size;i++) printf("%d\n",b[i]);
getch();
}
最佳答案
使用更简单的算法:
读取数字后,将数组A复制到B以保留原始输入。
对于升序排序,设置i = 0,j = i + 1
循环j直到数组末尾,如果B [j] 增大i,将j设置为i + 1,转到步骤3。除非i> = size。
打印数组A和B
该算法可以在以后进行优化。
关于c - 请帮助我调试我的插入排序程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7491318/