王道数据结构 (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个数据:\n");
  for (i = 1; i <= 7; i++)
    scanf("%d", &a[i]); //接收从键盘输入的10个数据到数组a中
  printf("原始顺序:\n");
  for (i = 1; i < 8; i++)
    printf("%5d", a[i]); //将未排序前的顺序输出
  insort(a, 7);          //调用自定义函数 insort()
  printf("\n 插入数据排序后顺序:\n");
  for (i = 1; i < 8; i++)
    printf("%5d", a[i]); //将排序后的数组输出
  printf("\n");
  return 0;
}

运行效果:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-08-17 10:00  1点  阅读(374)  评论(0编辑  收藏  举报