欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    内部排序比较.docx

    • 资源ID:12778601       资源大小:142.70KB        全文页数:18页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    内部排序比较.docx

    1、内部排序比较 哈尔滨理工大学课 程 设 计 (数据结构)题 目:内部排序算法比较班 级:姓 名:指导教师:系主任: 2013年3月7号 目 录1(内部排序算法)问题课程设计3 1.1题目分析3 1.2数据结构3 1.3流程图4 1.4实现技术5 1.5设计结论和心得62. (C+)代码分析7 2.1功能说明13 2.2局部数据结构132.3流程图141内部排序课程设计1.1 题目分析对各种内部排序算法的时间复杂度有一个比较直观的感受,包括关键字比较次数和关键字移动次数。将排序算法进行合编在一起,可考虑用顺序执行各种排序算法来执行,最后输出所有结果。1.2 数据结构本程序中,考虑的内容就是待排序

    2、对象,排序的依据是关键字之间的大小比较,故在每个节点的类型定义中,至少得包含关键字key一项。不失一般性,这里就使用关键词这一项,其他都省略,具体应用加上其他数据项即可。被排序对象是由一个个节点够成,一个排序对象包含一系列指向一串节点的指针,排序对象的长度。本程序功能简单。typedef structint key; /*关键字*/RecordNode; /*排序节点的类型*/typedef struct RecordNode *record; int n; /*排序对象的大小*/SortObject; /*排序节点的类型*/用伪代码表示如下1)冒泡排序算法伪代码 bubblesoft(dat

    3、a ) for i=1to data.length-2 for j=data.length-1 downto j+1 如果顺序错误就交换j和j-1的位置上元素; 2)选择排序算法伪代码 selectionsoft(data ) for i=1to data.length-2 从datai,datadata.length-1中选取最小的元素 将它和datai交换; 3)插入排序算法伪代码 insertionsoft(data ) for i=1todata.length-1 tmp =datai; 将所有大于tmp的元素dataj移动一个位置; 把tmp放到正确的位置上; 为了实现这些数据结构,

    4、用C语言定义变量如下:int Create_Sq(SqList &L)void Bubble_sort(SqList &L)/冒泡排序void InsertSort(SqList &L)/插入排序 void SelectSort(SqList &L) /简单选择排序int Partition(SqList &L,int low,int high)void QSort(SqList &L,int low,int high)/递归形式的快速排序算法void QuickSort(SqList &L)void ShellInsert(SqList &L,int dk)/希尔排序 void ShellS

    5、ort(SqList &L,int dlta 1.3 流程图1.4 实现技术实现步骤如下:1.待排序长度不小于100,数据可有随机函数产生,用五组不同输入数据做比较,比较的指标为关键字参加比较的次数和关键字移动的次数;2.对结果做简单的分析,包括各组数据得出结果的解释;3.设计程序用顺序存储。运行结果如下:元素个数为20元素个数为1001.5 设计结论和心得(1)实验中的存在问题和提高存在问题:程序有待增强。提高:界面处理简洁。(2)收获与体会各种排序的算法排序的算法的比较次数与移动次数的计算随机数的生成2.代码分析为了进一步了解操作系统内核,学习了Linux操作系统的进程同步程序,主要程序源

    6、代码如下:#include #include using namespace std;#define LS(a,b) (a)(b)#define MAXSIZE 10000typedef int KeyType;typedef struct KeyType key;RedType;typedef struct RedType rMAXSIZE+1;int length;SqList;int compare=0;int change=0;int Create_Sq(SqList &L)int k;coutk;L.length=k;srand(time(NULL); for (int x=1; x

    7、=k; x+) L.rx.key= rand() % k;/随机域为0k return 1; void Bubble_sort(SqList &L)/冒泡排序 int i,j,l,k=L.length,m=0,n=0;for(i=1;i=L.length-1;+i) for(j=1;j=k-1;+j) +m; if(LL(L.rj.key,L.rj+1.key) l=L.rj.key; L.rj.key=L.rj+1.key; L.rj+1.key=l; +n; -k;coutendl-冒泡排序后的序列-endl;for(i=1;i=L.length;i+) cout L.ri.key;cou

    8、tendl;cout冒泡排序的比较次数:;coutmendl;cout冒泡排序的交换次数:;coutnendl; void InsertSort(SqList &L)/插入排序 int i,j,m=0,n=0;coutendl; for(i=2;i=L.length;+i) if(LS(L.ri.key,L.ri-1.key) +m; +n; L.r0=L.ri; L.ri=L.ri-1; for(j=i-2;LS(L.r0.key,L.rj.key);-j) +m; L.rj+1=L.rj; L.rj+1=L.r0; cout-直接插入排序后的序列-endl;for(i=1;i=L.leng

    9、th;i+) cout L.ri.key;coutendl;cout直接插入排序的比较次数:;coutmendl;cout直接插入排序的交换次数:;coutnendl; void SelectSort(SqList &L) /简单选择排序 int l,i,j,m=0,n=0;coutendl;for(i=1;iL.length;+i) L.r0=L.ri; j=i+1; l=i; for(j;j=L.length;+j) +m; if(LL(L.r0.key,L.rj.key) l=j; L.r0=L.rj; if(l!=i) +n; L.rl=L.ri; L.ri=L.r0; cout-简单

    10、选择排序后的序列-endl;for(i=1;i=L.length;i+)cout L.ri.key;coutendl;cout简单选择排序的比较次数:;coutmendl;cout简单选择排序的交换次数:;coutnendl; int Partition(SqList &L,int low,int high)int pivotkey;L.r0=L.rlow;pivotkey=L.rlow.key;while(lowhigh) while(low=pivotkey) +compare; -high; +change; L.rlow=L.rhigh; while(lowhigh&L.rlow.ke

    11、y=pivotkey) +compare; +low; +change; L.rhigh=L.rlow;L.rlow=L.r0;return low; void QSort(SqList &L,int low,int high)/递归形式的快速排序算法int pivotloc;if(lowhigh) pivotloc=Partition(L,low,high); QSort(L,low,pivotloc-1); QSort(L,pivotloc+1,high); void QuickSort(SqList &L)int i;QSort(L,1,L.length);cout-快速排序后的序列为-

    12、endl;for(i=1;i=L.length;i+)cout L.ri.key;coutendl;cout快速排序的比较次数:;coutcompareendl;cout快速排序的交换次数:;coutchangeendl;compare=0;change=0; void ShellInsert(SqList &L,int dk)/希尔排序 int i;int j;for(i=dk+1;i0&LS(L.r0.key,L.rj.key);j-=dk) +compare; +change; L.rj+dk=L.rj; L.rj+dk=L.r0; void ShellSort(SqList &L,in

    13、t dlta)/希尔排序 int k,j=L.length/2,t=0;while(j=0) +t; j-=2;j=L.length/2;for(k=0;kt;+k)/计算每次的增量值 if(j=0) j=1;/定义最后一趟排序的增量 dltak=j; j-=2;for(k=0;kt;+k) ShellInsert(L,dltak);cout-希尔排序后的序列为-endl;for(k=1;k=L.length;k+) cout L.rk.key;coutendl;cout希尔排序的比较次数:;coutcompareendl;cout希尔排序的交换次数:;coutchangeendl;compa

    14、re=0;change=0; /*这里是改造后的main,他的原始形式是dev自动生成的*/ int main(int argc, char *argv) int i;int dltaMAXSIZE;SqList L,a,b,c,d;Create_Sq(L);a=b=c=d=L;for(i=1;i=L.length;i+)cout L.ri.key; Bubble_sort(L);InsertSort(a);SelectSort(b);QuickSort(c);ShellSort(d,dlta);/*这两行是系统自动生成的main中的内容,不要删了 */ system(PAUSE);retur

    15、n EXIT_SUCCESS;2.1 功能说明这一段程序的主要功能为:希尔排序O(n1.3)O(1)时间复杂度与空间复杂度:理论分析可以得出各种排序算法的时间复杂度和空间复杂度,如下表所示(图6):影响排序的因素: 待排序的记录数目n 的大小。 记录本身数据量的大小,也就是记录中除关键字外的其他信息量的大小。 关键字的结构及其分布情况。 对排序稳定性的要求2.2局部数据结构本程序有局部变量及数据结构,其类型定义及语义如下:typedef struct KeyType key;RedType;typedef struct RedType rMAXSIZE+1;int length;SqList;2.3流程图2.4以实例说明运行过程元素个数为20 元素个数为100


    注意事项

    本文(内部排序比较.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开