插入排序是C语言中的一种简单排序方法其原理还是很好理解的。
#include<stdio.h>
int main() {
int a[11] = {21, 23, 34, 56, 63, 67, 76, 79, 87, 96};//初始数组必须是有序的,有10个元素
int x, k=0;//此处只讲解插入一个数据
scanf("%d", &x);
if(x<a[0]){
for(int i=9;i>=0;i--){
a[i+1]=a[i];
}
a[0]=x;
}else {
for (int i = 9; i >= 0; i--) {//此循环是找x应放在哪个位置
if (a[i] <= x) {
k = i;//x应处位置的下标用k存储
break;
}
}
for (int i = 9; i > k; i--) {//将下标大于k的数据依次向后移
a[i + 1] = a[i];//注:必须从最后一个开始向后移,否则会发生数据覆盖!!!
}
a[k] = x;/*依次向后之后,就会出现一个空位(并非没有数据,只是将原本该处的数据向后移了)
该空位下标即为k+1,再将a[k+1]赋值为x*/
}
for (int i = 0; i < 11; i++) {
printf("%d ", a[i]);
}