插入排序——C语言
《算法导论》2.1 插入排序的代码实现:
/*
*File name:Insertion_sort
*Author:Fei Yuling Version:1.0 Date:2018.9.15
*Description:对数组元素进行插入排序
*/
#include<stdio.h>
#define MAX 100
int main()
{
int n,i,j,key;
int a[MAX];
printf("请输入待排序列数字个数:");
scanf("%d",&n);
printf("\n请依次输入待排序列数字:");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
//下面进行升序的插入排序
for(j=1;j<n;j++)
{
i=j-1;
key=a[j];
while(i>=0&&a[i]>key)//待排的那个数字从它前面的数字开始依次往前比较,如果比待排数字大就往后挪
{
a[i+1]=a[i];
i--;
}
a[i+1]=key;//退出循环时i-1了,所以此时待排数字要放在a[i+1]的位置上
}
printf("\n升序排序成功后序列为:");
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
//下面进行降序的插入排序
for(j=1;j<n;j++)
{
i=j-1;
key=a[j];
while(i>=0&&a[i]<key)//待排的那个数字从它前面的数字开始依次往前比较,如果比待排数字小就往后挪
{
a[i+1]=a[i];
i--;
}
a[i+1]=key;//退出循环时i-1了,所以此时待排数字要放在a[i+1]的位置上
}
printf("\n降序排序成功后序列为:");
for(i=0;i<n;i++)
{
printf(