#include <stdio.h>
#include <conio.h>
int main()
{
int a[6] = {5,2,4,6,1,3};
int j,i,k,cnt=1;
for (j=1;j<7;j++)
{
k = a[j];
i = j-1;
while(i>0 && a[i]>k)
{
a[i+1] = a[i];
i = i-1;
}
a[i+1] = k;
}
for(i=0;i<6;i++)
{
printf("\n Final op %d",a[i]);
}
getch();
}
我在静态数组中传递了一些元素,但第一个元素是值
a[0]
未进行排序,但a[1]
到a[5]
的其余值已排序
答案 0 :(得分:3)
问题是
中的>0
while(i>0
这应该是
while(i>=0
此外,
中存在未定义的行为 k = a[j];
j==6
。
答案 1 :(得分:0)
while(i>-1 && a[i]>k)
{
a[i+1] = a[i];
i = i-1;
}
只进行此更改,您的插入排序将完美运行。
它没有被排序,因为数组从[0] n开始,当它在[0]时终止,所以不访问它的元素。
希望它能帮到你