插入排序问题,请前辈帮忙看一下。
程序说明:下列程序完成的是插入排序功能:数组a 中存放一个递增
数列,输入一个整数x,将它插入到数组中,使之仍为一个有序数列。
下面是我写的一个代码,但是当我输入数值“26”的时候,输出结果竟然是:90 1 10 20 90 30 40 50 60 70 80 90
不知道哪里出了问题,红色字的并不是我想要的26,而是90。麻烦前辈帮忙看一下问题出在哪。谢谢
#include "stdio.h"
#define N 10
void main()
{
int a[]={1,10,20,30,40,50,60,70,80,90} ,x,i,p;/*定义数组及其它变量*/
scanf("%d",&x); /*输入X的数值*/
for(i=0,p=N;i<N;i++) /*利用循环判断X在数组中的位置*/
if(x<a[i])
{
p=i;
i=N;
}
for(i=N-1;i>=p; i--) /*利用循环重新分配在X插入后数值对应的位置*/
a[i+1]=a[i];
a[p]=x; /*确定X在数组中的位置*/
printf("%d",x); /*输出X的数值*/
for(i=0;i<=N;i++) /*利用循环输出更新后的数组*/
printf("%5d",a[i]);
printf("\n");
getch(); /*wintc需要这一个*/
}