关于一个插入算法的问题
#include <stdio.h>
void insertsort(int k[],int n)
{
int i,j;
int tmp;
for(i=2;i<=n;i++)
{
tmp=k[i];
j=i-1;
while(j>0 && tmp<k[j])
{
k[j+1]=k[j--];
}
k[j+1]=tmp;
}
}
int main()
{
int test[7]={3,6,4,2,11,10,6};
insertsort(test,6);
for(int i=0;i<7;i++)
{
printf("%d\n",test[i]);
}
return 0;
}
编译的时候提示:
test.c:14:14: warning: unsequenced modification and access to 'j'
[-Wunsequenced]
k[j+1]=k[j--];
~ ^
1 warning generated.
使用应该写成:
k[j+1]=k[j];
j--;
比较妥当呢?
另外在运行的时候,排序结果不是预想的从小到大的排序结果,而是:3,0,4,2,6,10,6.
应该怎么改才是正确的呢,麻烦各位指点。