此方法适用于读取同时进行插入
(读一个插一个)
#include <stdio.h>
#include <stdlib.h>
void main1() {
int a[10] = { 1,2,3,4,6,7,8,9,10,5 };
int temp = a[9];
int j = 9; //记录下标
while (j > 0 && a[j-1] >temp) { //a[j-1]>temp确定要插入的位置
a[j] = a[j - 1];//往前移动
j--;
for (int i = 0; i < 10; i++) {
printf("%d", a[i]);
}
printf("\n");
}
a[j] = temp;
for (int i = 0; i < 10; i++) {
printf("%d", a[i]);
}
printf("\n");
system("pause");
}
void main() {
int a[10] = { 1,5,2,4,3,8,7,9,10,6 };
for (int i = 1; i < 10; i++) { //只有一个不需要插入
int temp = a[i];
int j = i;
while (j > 0 && a[j-1]>temp) {
a[j] = a[j - 1];//往后移动
j--;
}
a[j] = temp;
for (int i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
for (int i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
system("pause");
}