插入排序
2020-11-20 本文已影响0人
DFlatMajor
总结:在往后挪动时,数据被覆盖了,所以往后比较没有意义。用了断点调试,看数组中的值的变化,发现值的丢失。
#include<stdio.h>
int main() {
int a[10] = {5,3,2,6,8,2,11,0,7,44};
//0 ~ i位置有序 ,将 i + 1往里面插
int j = 0;
int tmp;
for (int i = 1; i < 10; i++) {
j = i;
tmp = a[j];
while (j - 1>= 0 && a[j - 1] <tmp) { //原来这里是 a[j-1] < a[j] 后来用断点调试查看数组里面的变化
//在用临时变量的时候,往后比较时,用来比较的数据被覆盖了,所以失准
a[j] = a[j - 1];
j--;
}//j为等待插入的位置
a[j] = tmp;
}
for (int i = 0; i < 10; i++) {
printf("%d\n", a[i]);
}
}