2022年数据结构实验题目和源程序 .pdf
《2022年数据结构实验题目和源程序 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构实验题目和源程序 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1、直接插入排序2、希尔排序3、2-路归并排序4、折半插入排序5、冒泡排序6、快速排序7、堆排序/*-*07_排序.cpp-排序的相关操作*对排序的每个基本操作都用单独的函数来实现*水上飘2011 年写-*/ds07.cpp:定义控制台应用程序的入口点。/#include stdafx.h#include stdio.h#include#include using namespace std;#define MAXSIZE 20 typedefintKeyType;typedefstruct KeyType key;/关键字项KeyType data;/数据项RedType;/记录类型type
2、defstruct RedTypearrMAXSIZE+1;/arr0 闲置或用作哨兵单元int length;/顺序表长度SqList;/顺序表类型typedefSqListHeapType;/对顺序表L做一趟希尔插入排序/前后记录位置的增量是dk/r0 只是暂存单元/当 j=0 时,插入位置已找到voidshellInsert(SqList&L,intdk)名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 8 页 -int i,j;for(i=dk+1;i=L.length;i+)if(L.arri.key 0&L.arr0.key L.arrj.key;j-=dk)L.arr
3、j+dk=L.arrj;/记录后移,查找插入位置/end for j L.arrj+dk=L.arr0;/插入/end if/end for i/shellInsert/按增量序列dlta0.t-1 对顺序表做希尔排序voidshellSort(SqList&L,intdlta,int t)for(int k=0;k t;k+)shellInsert(L,dltak);/一趟增量为dltak 的插入序列 /折半插入排序voidbInsertSort(SqList&L)for(int i=2;i=L.length;i+)L.arr0=L.arri;/将其暂存到arr0 int low=1;int
4、 high=i-1;while(low=high)/在 arrlow.high 中折半查找有序插入的位置int m=(low+high)/2;/折半if(L.arr0.key=high+1;j-)L.arrj+1=L.arrj;/记录后移L.arrhigh+1=L.arr0;/插入/for/BInsertSort/直接插入排序名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 8 页 -voidinsertSort(SqList&L)for(int i=2;i=L.length;i+)if(L.arri.key L.arri-1.key)/if,需将 L.arri插入有序子表L.ar
5、r0=L.arri;/复制为哨兵L.arri=L.arri-1;int j;for(j=i-2;L.arr0.key L.arrj.key;j-)L.arrj+1=L.arrj;/记录后移L.arrj+1=L.arr0;/插入到正确位置/if/for/InsertSort/冒泡排序voidbubbleSort(SqList&L)RedType*temp=NULL;for(int i=1;i L.length;i+)/第 i 趟排序for(int j=1;j L.arrj+1.key)/交换前后的位置L.arr0=L.arrj;L.arrj=L.arrj+1;L.arrj+1=L.arr0;/i
6、f/for j/for i/bubbleSort/交换顺序表中子表L.arrlow.high 的记录,/枢轴记录到位,并返回其所在位置int partition(SqList&L,int low,int high)L.arr0=L.arrlow;/子表的第一个记录做枢轴记录KeyTypepivotKey=L.arrlow.key;/枢轴记录关键字while(low high)/从表的两端交替向中间扫描while(low=pivotKey)high-;/while L.arrlow=L.arrhigh;/将比枢轴小的记录移到低端while(low high&L.arrlow.key=pivotK
7、ey)low+;/while 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 8 页 -L.arrhigh=L.arrlow;/将比枢轴大的记录移到高端/while L.arrlow=L.arr0;/枢轴记录到位return low;/返回枢轴位置/paitition/对顺序表L中的子序列L.arrlow.high 做快速排序voidqSort(SqList&L,int low,int high)if(low high)/长度大于1 KeyTypepivotLoc=partition(L,low,high);/将 L.arrlow.high 一分为二qSort(L,low,piv
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据结构实验题目和源程序 2022 数据结构 实验 题目 源程序
限制150内