第十五周 验证直接插入排序

来源:互联网 发布:安卓需要java什么基础 编辑:程序博客网 时间:2024/06/01 08:04
/*问题及代码 *Copyright(c)2016,烟台大学计算机学院 *All right reserved. *文件名称:直接插入排序.cpp *作者:李潇 *时间:12月17日 *版本号;v1.0 *问题描述:         请用直接插入排序的算法完成序列任意数列的排序。 *程序输入:随意输入一个数组  *程序输出:根据题目要求输出。*/

代码:

#include <stdio.h>typedef int KeyType;typedef int InfoType;typedef struct {KeyType key;InfoType data;}RecType;void TnsertSort(RecType R[],int n){int i,j,k;RecType tmp;for(i=1;i<n;i++){tmp=R[i];j=i-1;while(j>=0 && tmp.key<R[j].key){R[j+1]=R[j];j--;}R[j+1]=tmp;        printf("i=%d: ",i);        for (k=0; k<n; k++)            printf("%d ",R[k].key);        printf("\n");}}void show(RecType R[],int n){int i;for(i=0;i<n;i++)printf("%d  ",R[i].key);printf("\n");}int main(){RecType r[10];int i;for(i=0;i<10;i++){scanf("%d",&r[i].key);}printf("排序的过程:\n");    TnsertSort(r,10);printf("输出直接插入排序后的数组\n");    show(r,10);return 0;}

运行结果:


心得体会:

  在这里第一次遇到了 用scanf +空格循环输入一个数组时  必须多输入一个数才执行程序,而去掉空格或用cin,就不会出现这种情况。问了同学,百度了一下,又问了老师才知道原因是缓冲区的事情。

0 0
原创粉丝点击