【发布时间】:2015-04-27 16:14:49
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, key, p;
int A[] = {1, 3, 2, 4, 9, 8, 7};
for (j=1; j<7; j++){
key = A[j];
//insert A[j] into the sorted sequence
i = j-1;
while(i>0 && A[i]>key){
A[i+1] = A[i];
--i;
}
A[i+i] = key;
}
for(i=0; i<7; ++i){
printf("%d ", A[i]);
}
return 0;
}
上述代码应该执行插入排序,但是,我得到了不受欢迎的排序,重复值很少。我似乎无法弄清楚我哪里出错了。
【问题讨论】:
-
你能提供一个示例输入和输出吗?
-
输入是内联的 - 输出是 2 3 3 4 4 8 8
-
你用调试器单步调试了代码
-
A[i+i] = 键; - 看起来很奇怪,也许你的意思是 A[i+j] = key;或 A[i+1] = key;(我没有遵循算法)
标签: c algorithm sorting insertion-sort