数据结构实验(七种排序算法的实现)题目和源程序.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构实验(七种排序算法的实现)题目和源程序.doc》由会员分享,可在线阅读,更多相关《数据结构实验(七种排序算法的实现)题目和源程序.doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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 20typedef int KeyType;typedef structKeyType key; /关键字项KeyType data; /数据项R
2、edType; /记录类型typedef structRedType arrMAXSIZE+1; /arr0闲置或用作哨兵单元int length; /顺序表长度SqList; /顺序表类型typedef SqList HeapType;/对顺序表L做一趟希尔插入排序/前后记录位置的增量是dk/r0只是暂存单元/当j=0时,插入位置已找到void shellInsert(SqList &L, int dk)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.
3、arrj + dk = L.arrj;/记录后移,查找插入位置/end for jL.arrj + dk = L.arr0;/插入/end if/end for i/shellInsert/按增量序列dlta0.t-1对顺序表做希尔排序void shellSort(SqList &L, int dlta, int t)for (int k = 0;k t; k+)shellInsert(L, dltak);/一趟增量为dltak的插入序列/折半插入排序void bInsertSort(SqList &L)for (int i = 2; i = L.length; i+)L.arr0 = L.a
4、rri;/将其暂存到arr0int low = 1;int 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/直接插入排序void insertSort(SqList &L)for(int i = 2; i = L.length; i+)if(L.arri.key L.arri-1.key
5、)/if,需将L.arri插入有序子表L.arr0 = 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/冒泡排序void bubbleSort(SqList &L)RedType* temp = NULL;for(int i = 1; i L.length; i+)/第i趟排序for(int j = 1; j L.arrj+1.key)/交换前后的位置L
6、.arr0 = L.arrj;L.arrj = L.arrj+1;L.arrj+1 = L.arr0;/if/for j/for i/bubbleSort/交换顺序表中子表L.arrlow.high的记录,/枢轴记录到位,并返回其所在位置int partition(SqList &L, int low, int high)L.arr0 = L.arrlow;/子表的第一个记录做枢轴记录KeyType pivotKey = L.arrlow.key;/枢轴记录关键字while(low high)/从表的两端交替向中间扫描while(low = pivotKey)high-;/whileL.arr
7、low = L.arrhigh;/将比枢轴小的记录移到低端while(low high & L.arrlow.key = pivotKey)low+;/whileL.arrhigh = L.arrlow;/将比枢轴大的记录移到高端/whileL.arrlow = L.arr0;/枢轴记录到位return low;/返回枢轴位置/paitition/对顺序表L中的子序列L.arrlow.high做快速排序void qSort(SqList &L, int low, int high)if(low high)/长度大于1KeyType pivotLoc = partition(L, low, hi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 排序 算法 实现 题目 源程序
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内