直接插入排序实现原理:我们从数组(or结构体)中的第二个数据开始,与上一个数据进行比较,如果大于的话就让a[0] = a[i];a[i] = a[i-1];之后我们就进入倒序打擂台模式,让j = i - 2之后如果a[0]<a[j]j--且让a[j]向后移动一个单位,如果大于就将a[0]赋值给当前的a[j+1]。至此插入排序算法结束。

#include<stdio.h>
int main(){
int a[100];
int n;
int j;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=2;i<=n;i++){
if(a[i]<a[i-1]){
a[0] = a[i];
a[i] = a[i-1];
for( j=i-2;a[0]<a[j];j--){
a[j+1] = a[j];
}
a[j+1] = a[0];
}

}
for(int i = 1;i<=n;i++){
printf("%d ",a[i]);
}
}

插入排序的时间复杂度为o($$n^2$$)