https://www.cnblogs.com/guopengxia0719/p/10520561.html
C语言
#include <stdio.h>
int a[20];
void InputArraay()
{
for (int i = 1; i <= 10; i++)
scanf("%d", &a[i]);
}
void OutputArraay()
{
for (int i = 1; i <= 10; i++)
printf("%d ", a[i]);
}
//插入排序
//1.数据分为两部分,一开始有序部分包含1个元素
//2.依次将无序部分的元素插入到有序部分当中
void Insert(int i)
{
int j = i - 1, k = a[i]; //j为当前下标, k为无序部分第一个元素
while (j >= 1 && k < a[j])
{ //找到k元素在有序部分的位置
a[j + 1] = a[j]; //循环的时候直接右移有序数组,为k腾出位置
j--; //不是k正确的位置,继续往前循环
}
a[j + 1] = k; //出来的时候j多减了1,要加回去
}
void Sort()
{
//遍历无序部分,每次取出第一个元素
for (int i = 2; i <= 10; i++)
{
Insert(i);
}
}
int main()
{
InputArraay();
Sort();
OutputArraay();
return 0;
}