#include <stdio.h>
#include <stdlib.h>
void show(int a[], int n);
void Insection_Sort(int a[], int n)
{
int i, j;
int key;
for ( i = 1; i < n; i++)//第一个位置已经排好序,从第2个位置开始取数进行插入
{
key = a[i];
for ( j = i - 1; j >= 0; j--)//i之前是所有已经排好序的数,i是现在正准备插入的数
{
if (key < a[j])
{
a[j + 1] = a[j];//如果要插入的数比当前位置的数小,则当前位置的数后移一个位置
}
else
{
break;//否则要插入的数的位置就找到了,就不用在继续查找下去,结束循环
}
}
a[j + 1] = key;//插入的位置就在当前数的后面
show(a, n);
}
}
void show(int a[], int n)
{
for (int i = 0; i < n; i++)
{
printf("%3d", a[i]);
}
putchar('\n');
}
int main(void)
{
int a[] = {6, 1, 3, 10, 7, 9, 2, 4, 5,8 };
show(a, 10);
Insection_Sort(a, 10);
show(a, 10);
system("pause");
return 0;
}
插入排序算法实现
最新推荐文章于 2024-07-14 22:00:56 发布