ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:80.49KB ,
资源ID:22107238      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22107238.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构与算法排序分析Word格式文档下载.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构与算法排序分析Word格式文档下载.docx

1、stdio.hstdlib.htime.h#define MAX 50/ 顺序表结构体typedef struct int sMAX; / 存放一批随机整数,数组大小MAX不能扩充 int length; / 当前表中元素的个数 SeqList;/ 功能菜单void menu() printf(nt*排-序*n);t* 1 随机产生一批整数 *nt* 2 手动输入一批整数 *nt* 3 将表中数据随机化 *nt* 4 快速排序 *nt* 5 希尔排序 *nt* 6 堆排序 *nt* 7 归并排序 *nt* 8 依次显示表中所有数据 *nt* 0 退出程序 *nt*n/* 初始化一个空的顺序表

2、*/SeqList *init() / 开辟顺序表空间 SeqList *p=(SeqList *)malloc(sizeof(SeqList); / 设置顺序表的初始长度为0 p-length=0; / 返回整个顺序表的(起始)地址 return p;/* 随机产生一批整数到线性表中 */void randGen(SeqList *p) int num, i;请输入元素个数(=%d):n, MAX-1); scanf(%d, &num); srand(int)time(0); if(num = MAX) / 随机产生num个整数存入顺序表中(从1号单元开始存放,0号单元留作“哨兵”) for

3、(i=1; isi=1+(int)(100.0*rand()/(RAND_MAX+1.0); p-length=num; printf(顺序表中已成功放入%d个整数!, num); else顺序表空间不够,请重新输入元素个数!/* 手动输入一批整数到线性表中 */void manInput(SeqList *p)请输入%d个整数:= MAX-1) / 输入num个整数存入顺序表中(从1号单元开始存放,0号单元留作“哨兵”) scanf(p-si);顺序表中已成功输入%d个整数!/* 将顺序表中现有元素打乱为随机排列 */void randomizeList(SeqList *p) int i,

4、 selectLoc, tmp; / 借助选择法排序的思想,每次从尚未挑选的序列中随机挑选一个元素, / 将随机选中的元素交换到尚未选中元素序列的最前面或最后面。 for(i=1;p-length; / 产生一个属于区间i,p-length的随机数selectLoc selectLoc = i+(int)(p-length-i)*rand()/(RAND_MAX+1.0); if(selectLoc != i) tmp = p-si;si = p-sselectLoc;sselectLoc = tmp; / 反过来再来一遍 for(i=p- i1; i-) / 产生一个属于区间0,i的随机数s

5、electLoc selectLoc = 1+(int)(i*rand()/(RAND_MAX+1.0);顺序表中的元素已经重新随机排列!/ 快速排序划分函数int Partition(int R, int low, int high) /对记录子序列Rlow.high进行一趟快速排序,并返回枢轴记录所在位置 int pivotkey; R0=Rlow; pivotkey=Rlow; while(lowhigh) /从表的两端交替向中间扫描 while(low=pivotkey) -high; if(lowhigh) Rlow+=Rhigh; /将比枢轴记录小的记录移到低端 Rlow +low

6、; Rhigh-=Rlow; /将比枢轴记录大的记录移到高端 Rlow=R0; return low; / 最后返回枢轴的位置(下标)/ 快速排序递归函数void QSort(int R, int s, int t) / 对记录Rs.t进行快速排序 int pivotloc; if(ss,1,p-length);已采用快速排序算法成功排序!/ 一趟希尔插入排序(实质为直接插入排序的变形)void shellInsert(SeqList *p, int dk) int i, j; for(i=dk+1;=p- +i) if(p-si / 设置插入排序的“哨兵” for(j=i-dk; j0 &s

7、0 sj+dk = p- s0;/* 希尔排序(缩小增量排序),假设增量设置为5,3,1 */void shellSort(SeqList *p, int dlta, int t) int k; / 按增量序列dlta0.t-1对顺序表中的元素作希尔排序 for(k=0; ksm.n区间元素重新调整为堆的函数void heapAdjust(SeqList *p, int m, int n) / 使得p-sm.n成为大堆 int j,rc; rc=p-sm; for(j=2*m; j=n; j*=2) if(jn &sj sj) break;sm=p- m=j;sm=rc;/* 堆排序 */vo

8、id heapSort(SeqList *p) / 对顺序表p进行堆排序 int rc,i;length/2;0; -i) heapAdjust(p,i,p- rc=p-s1;s1=p-si=rc; heapAdjust(p,1,i-1);已采用堆排序算法成功排序!/ 归并排序合并有序表/ 将有序的SR1.m和SRm+1.n归并为有序的TRi.nvoid Merge(int SR, int TR, int i, int m, int n) / 将有序的SRi.m和SRm+1.n归并为有序的TRi.n int k,j; for(j=m+1,k=i;=m & +k) /将SR中记录由小到大的并入T

9、R if(SRi=SRj) TRk=SRi+; else TRk=SRj+; while(i=m) TRk+=SRi+; /将剩余的SRi.m复制到TR while(jlength+1)*sizeof(int); / 调用递归函数作归并排序 Msort(p-s, auxSpa, p-s, 1, p- / 释放辅助空间 free(auxSpa);已采用归并排序算法成功排序!/* 显示表中所有数据 */void showAll(SeqList *p) int i; if(p-length 0)当前表中的元素个数为%d,依次如下:, p- printf(%d si);当前顺序表为空!void mai

10、n() int choice=-1; SeqList *plist; int incArr=5,3,1; / 将希尔排序的增量设置为5,3,1 plist=init(); while(1) menu(); fflush(stdin);t请选择一个菜单项: scanf(choice); switch(choice) case 1: / 随机产生一组整数放入表中 randGen(plist); showAll(plist); break; case 2: / 手动输入一批整数放入表中 manInput(plist); case 3: / 将现有表中数据随机化排列 randomizeList(plist); case 4: / 快速排序 quickSort(plist); case 5: / 希尔排序(增量为3个,依次为5,3,1) shellSort(plist, incArr, 3); case 6: / 堆排序 heapSort(plist); case 7: / 归并排序 mergeSort(plist); case 8: / 按顺序显示表中所有数据 case 0: exit(0); default:t您输入的菜单项不存在,请重新选择! choice=-1; / 表示未选择菜单项 或者 菜单项选择错误

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1