第一范文网 - 专业文章范例文档资料分享平台

大数据结构课程设计_排序算法比较【完整版】

来源:用户分享 时间:2025/12/15 13:21:17 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

3、系统将随机数排序后整齐的显示出来。

4、用户可以选择继续排序或者退出系统。

七、程序源代码

/********************************************************************************************** 第六题:排序算法比较

设计要求:利用随机函数产生N个随机整数(N = 500,1000,1500,2000,2500,…,30000),

利用直接插入排序、折半插入排序,起泡排序、快速排序、||选择排序、堆排序,基数排序七种排序方法

(可添加其它排序方法)进行排序(结果为由小到大的顺序),并统计每一种排序所耗费的时间(统计

为图表坐标形式)。

************************************************************************************************/ #include \#include \

#include \中折半查找有序插入的位置 { mid=(low+high)/2; if[0]<[mid]) high]的记录,使得枢轴记录到位,并返回其所在位置,此时在它之前(后)的记录均不大于它 { int pivotkey; i]中最后一个记录互换 [1]=[i]; [i]=t; HeapAdjust(L,1,i-1); i-1]重新调整为大顶堆

} return OK; }

//************************************************** // 基数排序

//************************************************** typedef struct node{ int key; node *next; }RecType;

Status RadixSort(Sqlist L) { int t,i,j,k,d,n=1,m; RecType *p,*s,*q,*head[10],*tail[10]; //定义各链队的首尾指针 for(i=1;i<=;i++) //将顺序表转化为链表 { s=(RecType*)malloc(sizeof(RecType)); s->key=[i]; if(i==1) //当为第一个元素时 { q=s; p=s; t++; } else { q->next=s; //将链表连接起来 q=s; t++; } q->next=NULL; } d=1; while(n>0) //将每个元素分配至各个链队 { for(j=0;j<10;j++) //初始化各链队首、尾指针 { head[j] = NULL; tail[j] = NULL; } while(p!=NULL) //对于原链表中的每个结点循环 { k=p->key/d;

}

k=k; if(head[k]==NULL) //进行分配 { head[k]=p; tail[k]=p; } else { tail[k]->next=p; tail[k]=p; } p=p->next; //取下一个待排序的元素 }

p=NULL; //用于收集第一个元素时的判断

for(j=0;j<10;j++) //对每一个链队循环, 搜集每一个元素 { if(head[j]!=NULL) //进行搜集 { if(p==NULL) { p=head[j]; q=tail[j]; } else { q->next=head[j]; q=tail[j]; } } }

q->next=NULL; //最后一个结点的next置为空 d=d*10; n=0; m=1;

while(m<= //判断当L中的元素都除d后是不是都为零了 { if([m]/d)!=0) { n++; m++; } else m++; }

i=1; while(p!=NULL) //将链表转换为顺序表 { [i]=p->key; i++; p=p->next; } return OK; }

//************************************** // 主函数 //************************************** void main() { Sqlist L; Sqlist L0; InitSqlist(L); //初始化L InitSqlist(L0); int m,i; char choice='z'; clock_t start, finish; //定义clock_t用于计时 double duration; //向L中输入元素 printf(\n █████████████████████████████████████\\n\ printf(\ \\n\ printf(\ 算法排序比较系统 \\n\ printf(\ \\n\ printf(\ █████████████████████████████████████\\n\ printf(\ 以下是各个排序算法的代号:\\n\\n\ printf(\ 1、直接插入排序 \\n\ printf(\ 2、折半插入排序 \\n\ printf(\ 3、起泡排序 \\n\ printf(\ 4、快速排序\\n\ printf(\ 5、选择排序\\n\ printf(\ 6、堆排序\\n\ printf(\ 7、基数排序\\n\ printf(\ 8、退出该系统\\n\\n\ ScanfSqlist(m,L0); printf(\ printf(\ 1、直接插入排序 \\n\ printf(\ 2、折半插入排序 \\n\

大数据结构课程设计_排序算法比较【完整版】.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0kod47pxyr553973044s2xc786b4hd00ys7_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top