数据结构实验 直接插入排序和希尔排序_第1页
数据结构实验 直接插入排序和希尔排序_第2页
数据结构实验 直接插入排序和希尔排序_第3页
数据结构实验 直接插入排序和希尔排序_第4页
数据结构实验 直接插入排序和希尔排序_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验五第10章直接插入排序和希尔排序一、直接插入排序【源程序】#include#include#include#define LENGTH 10#define MAXSIZE 10typedef int KeyType;typedef struct(KeyType key;RedType;typedef struct(RedType rMAXSIZE+1;int length;SqList;void Init_L(SqList &L)洌始化静态表int i;L.length=LENGTH;printf(请输入 %d 个数据元素!n,L.length);for(i=1;i=L.length;i+

2、)scanf(%d”,&L.ri);void Display(SqList L)显示静态表内容printf(表中内容为:”);int i;for(i=1;i=L.length;i+)printf(%d ,L.ri);printf(n);void InsertSort(SqList &L)对顺序表L作直接插入排序int i,j;for(i=2;i=L.length;+i)if(L.ri.keyvL.ri-1.key)/”v”,需将 L.ri插入有序子表L.r0=L.ri;/复制为哨兵L.ri=L.ri-1;for(j=i-2;(L.r0.keyL.rj.key);-j)L.rj+1=L.rj;/

3、记录后移L.rj+1=L.r0;/插 入到正确位置 printf(第 %d 次排序时”,i-1);Display(L);/InsertSort*欢迎使用直接插入排序程序:*n);静态表的初始化*n); 直接插入排序*n); 退出操作 *n);void main() int j,t; SqList L; t=1; printf( printf(* printf(* printf(* while(t)printf(n请选择需要使用的功能:”); scanf(%d”,&j);switch(j) case 1:Init_L(L);Display(L);break;case 2:printf(-直接排序

4、过程如下n);InsertSort(L);break;case 3:t=0;Display(L);printf(退出操作,谢谢使用! n);break;default:printf(输入错误!请重新输入!谢谢!n);break;【程序运行截图】e -C:DOCUIENTS AMD SETTINGSALL USERS 桌面、第 10章直接插入排序Debug 第 10一 ;舞舞舞舞舞舞舞舞舞 舞舞舞舞舞舞舞舞舞 舞舞舞舞舞舞舞舞舞5 18 56情选择需要使用的功能H 隋输入10个数据元素, 12 10 7 8 14 5 18 56 79 23 宸中内容为:12 10 7 8/p>

5、721017658154182101 ?7658154121018 ?7658154121018 776581412101875765814121018757658141210187532 7958141211087553281412110875切“.切“.切“.切“.切“.切“ -容容容容容容容容容 一 内内内内内内内内内 ,口口口口口口口口口 的表表表表表表表表表 町时.町 - - - - - - - - - - - - - - - - - _T=TI司rfKLr.,r.,r.,r.,r.,r.,r.,r.,r., 择排胃!-上* 先一揍 12345678918 23 56 79gl雷慎碧

6、择需要使用的功能:3 莒考操作,谢谢使用!Press any key to continue14容为:5 7 8 10 12二、希尔排序【源程序】#include#include#include#define LENGTH 10#define MAXSIZE 10#define T 3typedef int KeyType;typedef struct(KeyType key;RedType;typedef struct(RedType rMAXSIZE+1;int length;SqList;void Init_L(SqList &L)洌始化静态表int i;L.length=LENGTH;

7、printf(请输入 %d 个数据元素!n,L.length);for(i=1;i=L.length;i+)scanf(%d”,&L.ri);void Display(SqList L)显示静态表内容printf(表中内容为:”);int i;for(i=1;i=L.length;i+)printf(%d ,L.ri);printf(n);void ShellInsert(SqList &L,int dk)对顺序表L作一趟希尔插入排序int i,j;for(i=dk+1;i=L.length;+i)if(L.ri.key0&(L.r0.keyL.rj.key);j-=dk)L.rj+dk=L.

8、rj;/记录后移,查找插入位置L.rj+dk=L.r0;/插 入/ShellInsertvoid ShellSort(SqList &L,int dlta,int t)按顺序增量序列dlta0.t-1对顺序表L作希尔排序int k;for(k=0;kt;+k)printf(第 %d趟希尔排序结果:”,k+1);ShellInsert(L,dltak);/一 趟增量为 dltak的插入排序 Display(L);/ShellSort void main()int j,t;int dtT=5,3,1;SqList L;t=1;printf( *欢迎使用希尔排序程序:*、/);printf(* 1.

9、静态表的初始化 *n);printf(* 2.希尔排序*n);printf(* 3.退出操作*n);while(t)(printf(n请选择需要使用的功能:”);scanf(%d”,&j);switch(j)(case 1:Init_L(L);Display(L);break;case 2:printf(希尔排序过程如下n);ShellSort(L,dt,T);break;case 3:t=0;printf(退出操作,谢谢使用! n);break;default:printf(输入错误!请重新输入!谢谢!n);break;【程序运行截图】*心心心心心心欢迎使营予尔m情选择需要使用的功能:1情输入10个数据元素,49 38 65 97 76 13 27 49 55 04 候中内容为:49 38 65 97 76 13 2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论