




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验六 各种排序方法的比较 一、 实验目的1通过实验掌握排序的基本概念,对排序的稳定性及排序的时间复杂性有深刻的认识。2掌握各种排序方法的基本思想和算法实现。3能够灵活地选用某种排序方法解决问题。二、 实验要求1 认真阅读和掌握本实验的参考程序。2 保存程序的运行结果,并结合程序进行分析。三、 实验内容编写一个程序,对所给的数据(程序中给出或通过键盘初始化均可)进行排序,要求尽可能多的选择不同的排序算法,并显示排序前和排序后的结果。#include #include #define TRUE 1#define FALSE 0#define N 10int a10 = 9,27,45,87,17,23,25,92,8,75 ;typedef structint key;int info;RecordNode;typedef struct Sortint n; /记录个数RecordNode *record;SortObject;/*直接插入排序*/void insertSort(SortObject *pvector) int i, j;RecordNode temp;for (i = 1; i n; i+) temp = pvector-recordi; j = i - 1;while (temp.key recordj.key) & (j = 0)pvector-recordj + 1 = pvector-recordj; j-; if (j != (i - 1) pvector-recordj + 1 = temp;/*二分法插入排序*/void binSort(SortObject * pvector) int i, j, left, mid, right;RecordNode temp;for (i = 1; i n; i+)temp = pvector-recordi; left = 0; right = i - 1; while (left = right)mid = (left + right) / 2; if (temp.keyrecordmid.key) right = mid - 1; else left = mid + 1; for (j = i - 1; j = left; j-)pvector-recordj + 1 = pvector-recordj;if (left != i) pvector-recordleft = temp;struct Node; typedef struct Node ListNode;struct Nodeint key; ListNode *next; ;typedef ListNode * LinkList;void listSort(LinkList * plist)ListNode *now, *pre, *p, *q, *head;head = *plist;pre = head-next;if (pre = NULL) return;now = pre-next;if (now = NULL) return; while (now != NULL)q = head; p = head-next;while (p != now & p-key key) q = p; p = p-next; if (p = now) pre = pre-next; now = pre-next; continue; pre-next = now-next; q-next = now; now-next = p; now = pre-next;/*Shell排序*/void shellSort(SortObject * pvector, int d) /* 按递增序进行Shell排序 */int i, j, increment;RecordNode temp;for (increment = d; increment 0; increment /= 2) for (i = increment; in; i+)temp = pvector-recordi; j = i - increment;while (j = 0 & temp.keyrecordj.key) pvector-recordj + increment = pvector-recordj; j -= increment;pvector-recordj + increment = temp; /*直接选择排序*/void selectSort(SortObject * pvector) int i, j, k;RecordNode temp;for (i = 0; i n - 1; i+) /* 做n-1趟选择排序 */k = i;for (j = i + 1; jn; j+) /* 在无序区内找出排序码最小的记录Rk*/if (pvector-recordj.keyrecordk.key) k = j;if (k != i) /* 记录Rk与Ri互换 */temp = pvector-recordi;pvector-recordi = pvector-recordk;pvector-recordk = temp;/*起泡排序*/void bubbleSort(SortObject * pvector)int i, j, noswap;RecordNode temp;for (i = 0; in - 1; i+) noswap = TRUE; for (j = 0; jn - i - 1; j+)if (pvector-recordj + 1.keyrecordj.key) temp = pvector-recordj; pvector-recordj = pvector-recordj + 1;pvector-recordj + 1 = temp;noswap = FALSE; if (noswap) break; /*快速排序*/void quickSort(SortObject * pvector, int l, int r)int i, j;RecordNode temp;if (l = r) return; i = l; j = r; temp = pvector-recordi;while (i != j) while (pvector-recordj.key = temp.key) & (ji) j-;if (irecordi+ = pvector-recordj;while (pvector-recordi.key i) i+;if (irecordj- = pvector-recordi;pvector-recordi = temp; quickSort(pvector, l, i - 1); quickSort(pvector, i + 1, r); /*归并*/void merge(RecordNode* r, RecordNode *r1, int low, int m, int high)int i, j, k;i = low; j = m + 1; k = low;while (i = m) & (j = high)if (ri.key = rj.key) r1k+ = ri+;else r1k+ = rj+;while (i = m) r1k+ = ri+; while (j = high) r1k+ = rj+;void mergePass(RecordNode *r, RecordNode *r1, int n, int length)int j, i = 0;while (i + 2 * length - 1n)merge(r, r1, i, i + length - 1, i + 2 * length - 1); i += 2 * length;if (i + length - 1n - 1) merge(r, r1, i, i + length - 1, n - 1);elsefor (j = i; jn; j+) r1j = rj; /*二路归并排序*/void mergeSort(SortObject *pvector)RecordNode recordN;int length = 1;while (lengthn)mergePass(pvector-record, record, pvector-n, length); /* 一趟归并,结果放在r1中*/length *= 2;mergePass(record, pvector-record, pvector-n, length); /* 一趟归并,结果放在r中 */length *= 2;void s1()/* 直接插入排序 */int i;SortObject *p1 = (SortObject *)malloc(sizeof(SortObject);p1-n = 10;p1-record = (RecordNode *)malloc(sizeof(RecordNode)*p1-n);for (i = 0; in; i+)p1-recordi.key = ai;insertSort(p1);printf(直接插入排序后 : );for (i = 0; in; i+)printf(%d , p1-recordi.key);printf(n);void s2()/* 二分法插入排序 */int i;SortObject *p2 = (SortObject *)malloc(sizeof(SortObject);p2-n = 10;p2-record = (RecordNode *)malloc(sizeof(RecordNode)*p2-n);for (i = 0; in; i+)p2-recordi.key = ai;binSort(p2);printf(二分法插入排序后: );for (i = 0; in; i+)printf(%d , p2-recordi.key);printf(n);void s3()/* Shell排序 */int i;SortObject *p3 = (SortObject *)malloc(sizeof(SortObject);p3-n = 10;p3-record = (RecordNode *)malloc(sizeof(RecordNode)*p3-n);for (i = 0; in; i+)p3-recordi.key = ai;shellSort(p3, 4);printf(Shell排 序 后 : );for (i = 0; in; i+)printf(%d , p3-recordi.key);printf(n);void s4()/* 直接选择排序 */int i;SortObject *p4 = (SortObject *)malloc(sizeof(SortObject);p4-n = 10;p4-record = (RecordNode *)malloc(sizeof(RecordNode)*p4-n);for (i = 0; in; i+)p4-recordi.key = ai;selectSort(p4);printf(直接选择排序后 : );for (i = 0; in; i+)printf(%d , p4-recordi.key);printf(n);void s5()/* 起泡排序 */int i;SortObject *p5 = (SortObject *)malloc(sizeof(SortObject);p5-n = 10;p5-record = (RecordNode *)malloc(sizeof(RecordNode)*p5-n);for (i = 0; in; i+)p5-recordi.key = ai;bubbleSort(p5);printf(起 泡 排 序 后 : );for (i = 0; in; i+)printf(%d , p5-recordi.key);printf(n);void s6()/* 快速排序 */int i;SortObject *p6 = (SortObject *)malloc(sizeof(SortObject);p6-n = 10;p6-record = (RecordNode *)malloc(sizeof(RecordNode)*p6-n);for (i = 0; in; i+)p6-recordi.key = ai;quickSort(p6, 0, p6-n - 1);printf(快 速 排 序 后 : );for (i = 0; in; i+)printf(%d , p6-recordi.key);printf(n);void s7()/* 二路归并排序 */int i;SortObject *p7 = (SortObject *)malloc(sizeof(SortObject);p7-n = 10;p7-record = (RecordNode *)malloc(sizeof(RecordNode)*p7-n);for (i = 0; in; i+)p7-recordi.key = ai;mergeSort(p7);printf(二路归并排序后 : );for (i = 0; in; i+)printf(%d , p7-r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025超市供应商采购合同协议范本
- 2025年实习生劳动合同范本
- 湖北省部分省级示范性重点中学教科研协作体2026届化学高三第一学期期末达标测试试题含解析
- 2025年红十字应急救护知识竞赛试题(附答案)
- 2025年海南省行政执法资格考试备考题库及答案
- 2025年国考公安基础知识真题及答案解析
- 2025年国家采气作业人员技能考试题库(含答案)
- 2025年轨道车司机(高级技师)职业技能鉴定考试题库(含答案)
- 造价毕业实习报告15篇
- 2025知识产权许可合同样本下载
- 高二上学期数学开学第一课《新学期新期望》课件
- 数字经济背景下企业商业模式创新
- HG∕T 4586-2014 化工用缠绕成型钢丝网骨架聚乙烯复合管
- DL∕T 1100.1-2018 电力系统的时间同步系统 第1部分:技术规范
- 高中语文人教版高一必修《李白将进酒》教育教学课件
- 设备购销合同详细范本
- 加装电梯补偿协议书范文模板
- 远古帝王世系表
- 国家基层糖尿病神经病变诊治指南(2024版)
- 人体常见病 知到智慧树网课答案
- 2024骨髓移植患者营养治疗专家共识(全文)
评论
0/150
提交评论