王道数据结构 (15) 直接插入排序

伪代码:

可运行代码:

#include <stdio.h>
int insort(int s[], int n) /* 自定义函数 insort()*/
{
  int i, j;
  for (i = 2; i <= n; i++) //数组下标从2开始,s[0]做监视哨,s[1]一个数据无可比性
  {
    s[0] = s[i]; //给监视哨陚值
    j = i - 1;
    while (s[0] < s[j])
    {
      s[j + 1] = s[j]; //数据右移
      j--;             //产移向左边一个未比较的数
    }
    s[j + 1] = s[0]; //在确定的位置插入s[i]
  }
  return 0;
}
int main()
{
  int a[11], i; //定义数组及变量为基木整甩
  printf("请输入7个数据:
");
  for (i = 1; i <= 7; i++)
    scanf("%d", &a[i]); //接收从键盘输入的10个数据到数组a中
  printf("原始顺序:
");
  for (i = 1; i < 8; i++)
    printf("%5d", a[i]); //将未排序前的顺序输出
  insort(a, 7);          //调用自定义函数 insort()
  printf("
 插入数据排序后顺序:
");
  for (i = 1; i < 8; i++)
    printf("%5d", a[i]); //将排序后的数组输出
  printf("
");
  return 0;
}

运行效果:

原文地址:https://www.cnblogs.com/guangzhou11/p/13515994.html