1 / 60
文档名称:

排序算法比较.docx

格式:docx   大小:701KB   页数:60页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

排序算法比较.docx

上传人:wxnt86 2020/1/5 文件大小:701 KB

下载得到文件列表

排序算法比较.docx

文档介绍

文档介绍:排序算法比较问题描述对直接插入排序,直接选择排序,冒泡排序,快速排序,:,分别取长度为500,20000,,并统计在排序同一组随机数时每种排序算法的运行时间,,,,:,,在每个排序算法参数列表中,除了含被排序指针对象外,另外加两个整型变量指针,,由计算机产生一定量的伪随机数后,主函数,调用各个排序函数,但由于排序对象也是指向一维数组的指针,在调用一次排序算法后,通过形参对指针的改变,,,这样一来,,将保存随机数的数组复制到该数组,,排序开始前接收一次系统时间,排序结束后接收一次系统时间,二者的差值即为排序算法所运行的时间。,排序的依据是关键字之间的大小比较。故在每个节点类型定义中,至少得包含关键字key这一项。被排序对象由一个个节点构成,一个排序对象包含一系列指向一串节点的指针,指针对象长度。具体说明如下:typedefstruct{ KeyTypekey;//关键字 intother;//数据}DataType;//节点类型typedefstruct{ DataTyper[1000000]; intlength;//排序对象的大小}Sqlist;//(1)直接插入排序函数StrightInsertSort()直接插入排序将待排序对象分为有序部分和无序部分,进行排序时逐次顺序提取无序部分的对象同有序部分的最后一个对象做比较,如果该对象大于有序部分最后一个对象,则将该对象插入到此位置,否则依次向左比较,直至找到插入位置。(2)直接选择排序函数Selectsort()该排序算法首先在所有的n个带排序对象中找到最小的对象,将其与第1个对象做交换后,在后n-1个对象中继续找到最大对象,找到后将其与第2个对象交换。直至将所有的对象找到并插入适当位置即可。(3)冒泡排序函数BubbleSort()在每一趟冒泡排序中,依次比较相邻两个关键字的大小。若为反序,则交换。经过一趟冒泡后最大的关键字已经到达最后了。若按这种方法进行n-1趟冒泡,排序既能完成。(4)堆排序函数Heapsort()对排序的算法思想很简单,就是每次把关键字调整为堆,取出堆顶元素与最后一个元素交换,同时令堆的大小减一,把剩下的元素重新调整为堆,重复此过程,直到只剩下一个元素为止。(5)快速排序函数将带排序记录的第一个记录作为分区标准,将小于其的元素放在左边,将大于其的元素放在右边,中间放所选记录,为一趟快速排序。然后对两个子序列如此排序,直至所有记录有序。#include""#include""#include""#include""#include""#include""#include"iostream"usingnamespacestd;#pragmaonce#ment(lib,"")typedefintKeyType;typedefstruct{ KeyTypekey; intother;}DataType;typedefstruct{ DataTyper[1000000]; intlength;}Sqlist;voidcopy(Sqlist*a,Sqlist*b);//复制intGetMemory();//得到系统开销状况voidSrandNum(Sqlist*s,intnum);//生成随机数voidStrightInsertSort(Sqlist*s,pare,long*exchange);//直接插入排序voidBubbleSort(Sqlist*s,pare,long*exchange);/