习题1-直接插入排序.c

来自「数据结构各章实验源代码; 数据结构实验源代码」· C语言 代码 · 共 31 行

C
31
字号
#include  "datastru.h"
#include  <stdio.h>

void insertsort(RECNODE *r, int n)
{/*直接插入排序*/
	int i,j;

	for(i = 2; i <= n; i++)
	  { r[0] = r[i];   j = i - 1;     /*r[0]是监视哨,j表示当前已排好序列的长度*/
	    while(r[0].key < r[j].key)    /*确定插入位置*/
	       {r[j + 1] = r[j];   j--;}
	    r[j + 1] = r[0];              /*元素插入*/
	  }
}

main( )
{ RECNODE  a[MAXSIZE];
  int  i, j, k, len;

 printf("\n\n输入待排序数据(整数,以空格隔开,0 结束) : "); k = 0; scanf("%d",&j);
 while(j != 0) { k++; a[k].key = j; scanf("%d",&j); }
 len = k;
 printf("\n排序前 : ");
 for (i = 0; i < len; i++)   printf("  %d",a[i+1].key);
 printf("\n");
 insertsort (a,len);
 printf("\n\n排序后 : ");
 for (i = 0; i < len; i++)   printf("  %d",a[i+1].key);
 printf("\n\n");
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?