首页 排序算法实现与演示系统

排序算法实现与演示系统

举报
开通vip

排序算法实现与演示系统中北大学 数 据 结 构 课 程 设 计 说 明 书    学生姓名: 学 号:   学生姓名: 学 号: 学生姓名: 学 号: 学生姓名: 学 号: 学生姓名: 学 号: 学  院: 专  业: 题  目: 排序算法实现与演示系统 成绩 指导教师      设计目的   本系统是为了实现和比较各种不同排序方法的不同复杂度,而建立的,从不同的角度比较各算法的优劣,从而使...

排序算法实现与演示系统
中北大学 数 据 结 构 课 程 设 计 说 明 书    学生姓名: 学 号:   学生姓名: 学 号: 学生姓名: 学 号: 学生姓名: 学 号: 学生姓名: 学 号: 学  院: 专  业: 题  目: 排序算法实现与演示系统 成绩 指导教师       设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 目的   本系统是为了实现和比较各种不同排序 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 的不同复杂度,而建立的,从不同的角度比较各算法的优劣,从而使使用者能对个排序方法有更清晰的了解. 2. 设计 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 和要求   本次设计的内容主要有实现各种排序算法以及比较各种算法。要求主要是要执行对一种数据类型的序列进行所有排序方法的排序计算,并返回序列及各算法的排序指标。 3.本设计所采用的数据结构   本次设计主要采用的数据结构有结构体定义,直接排序,选择排序,归并排序,快速排序,冒泡排序,希尔排序,堆排序等。 4.功能模块详细设计 4.1 详细设计思想 本次设计分主题设计和模块设计两部分。 主体设计方面,本系统的主要数据类型为含有一个关键字的结构体类型,命名为datatype;设置两个全局变量数组,cn和mn,分别用于 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 每种排序方法中的各排序元素的比较次数和移动次数(关键字交换以3次计)的总和。 模块设计方面,本系统大致可分为排序模块部分和运行模块部分。排序模块部分分为归并排序模块,快速排序模块,冒泡排序模块,选择排序模块,直接排序模块,希尔排序模块,堆排序模块;运行模块部分分为主函数,自行输入模块,随机模块,输出模块。 以下是各排序算法的核心设计思想: 冒泡排序 相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其他的数进行类似操作 快速排序 使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists) ,从数列中挑出一个元素,称为 "基准",重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边),递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子序列排序 插入排序 将一个记录插入到已排好序的有序表(有可能是空表)中,从而得到一个新的记录数增1的有序表 选择排序 每一趟从待排序的数据元素中选出最小(或最大)的一个元素, 顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完 希尔排序 将待排序的元素分为多个子序列,使得每个子序列的元素个数相对较少,对各个子序列分别进行直接插入排序,待整个待排序序列“基本有序”后,再对所有元素进行一次直接插入 堆排序 堆排序(HeapSort)是一树形选择排序。堆排序的特点是:在排序过程中,将R[l..n]看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系(参见二叉树的顺序存储结构),在当前无序区中选择关键字最大(或最小)的记录 归并排序 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 运行模块个算法如下: 主函数 首先选择一种生成原始数列的方法,然后经过选择进入相应的界面,将数据排序后输出,并显示出排序比较结果。 手动输入函数 依次输入数据,记录在一个已定义的寄存器中,待排序时使用。排序时将各排序模块函数调用,排序得出结果。 自动输入函数 调用已有的库函数产生所输入的个数的数列,然后调用已有排序函数,得到排序后数列,然后输出。 4.2 核心代码 #include #include #include #define MAXNUM 100   typedef  struct     { int  key;     } datatype; datatype R[MAXNUM];/*定义类型*/ int cn[MAXNUM],mn[MAXNUM]; void  D_InsertSort(datatype R[ ], int n)/*直接排序*/ {   int i,j;   extern int cn[MAXNUM],mn[MAXNUM]; for(i=2; i<=n; i++)   { cn[0]++;   if (R[i].key R[j].key)  break;         R[i]=R[j];  mn[3]++;         i=j;     }   R[i]=rc; } void HeapSort(datatype R[ ], int n)/*堆排序*/ { int i; extern int cn[MAXNUM],mn[MAXNUM]; for(i=n/2; i>0; i-- ) HeapAdjust(R, i, n); for(i=n; i>1; i--)     {  R[0]=R[1];         R[1]=R[i];         R[i]=R[0]; mn[3]+=3;         HeapAdjust(R,1, i-1);     }   } void  Merge(datatype R[ ], datatype R1[ ], int s, int m , int t) {   int i,j,k;   extern int cn[MAXNUM],mn[MAXNUM];     i=s;  j=m+1;  k=s;   while (i<=m&&j<=t)     {       cn[4]++;       if(R[i].key=R[0].key)  {cn[5]++; high--;}       if(low0;gap /= 2) /* 设置排序的步长,步长gap每次减半,直到减到1 */     {           for(i=gap;i= 0) && (R[j].key > R[j+gap].key);j -= gap ) /* 比较相距gap远的两个元素的大小,根据排序方向决定如何调换 */               {                 temp=R[j].key;                 R[j].key=R[j+gap].key;                 R[j+gap].key=temp;                 cn[6]+=1;                 mn[6]+=3;               }           }     } }                              void sui_ji()   {       int i,n;       datatype R[MAXNUM]={0},R1[MAXNUM]={0};;         a:printf("请输入你要输入的个数:");         scanf("%d",&n);         if(n>100)         {           printf("超出范围重新输入!!!\n");           goto a;         }       printf("排序前元素顺序为:");       for(i=1;i 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 书后,请在验收前填好) 文档已经阅读完毕,请返回上一页!
本文档为【排序算法实现与演示系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_212655
暂无简介~
格式:doc
大小:61KB
软件:Word
页数:10
分类:生活休闲
上传时间:2017-09-19
浏览量:52