




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
學号:課程设计題目内部排序算法的比较學院专业班级姓名指导教師年07月12曰課程设计任务書學生姓名:专业班级:指导教師:工作單位:題目:内部排序算法的比较初始条件:在教科書中,多种内部排序算法的時间复杂度分析成果只給出了算法执行時间的阶,或大概执行時间。试通過随机数据比较各算法的关键字比较次数和关键字移動次数,以获得直观感受。规定完毕的重要任务:(包括課程设计工作量及其技术规定、阐明書撰写等详细规定)(l)對如下6种常用的内部排序算法進行比较:起泡排序、直接插入排序、简朴选择排序、迅速排序、希尔排序、堆排序。(2)待排序表的表長不不不小于100000;其中的数据要用伪随机数程序产生;至少要用5组不一样的输入数据作比较;比较的指標為有关键字参与的比较次数和关键字的移動次数(关键字互换计為3次移動)。(3)最终要對成果作简朴分析,包括對各组数据得出成果波動大小的解释。時间安排:序号设计内容所用時间1問題分析和任务定义0.5天2数据类型和系统设计0.5天3编码实現和静态检查3天4上机准备和上机调试2天5總結和整顿设计汇报1天合计7天指导教師签名:07月05曰系主任(或责任教師)签名:07月05曰内部排序算法的比较需求分析1.1有关原理:(1)直接插入排序(StraightInsertionSort)是一种最简朴的排序措施,它的基本操作是将一种纪录插入到已排好序的有序表中,從而得到一种新的、纪录数增1的有序表;(2)希尔排序(Shell’ssort)又称“缩小增量排序”,它也是一种属插入排序类的措施,但在時间效率上较前述排序措施有较大改善。它的基本思想是:先将整個待排记录序列分割成為若干子序列分别進行直接插入排序,待整個序列中的记录“基本有序”時,再對全体记录進行一次直接插入排序。希尔排序的一种特點是:子序列的构成不是简朴的“逐段分割”,而是将相隔某個“增量”的记录构成一种子序列;(3)冒泡排序(Bubblesort)的過程很简朴。首先将第一种记录的关键字和第二個记录的关键字進行比较,若為逆序,则将两個记录互换之,然後比较第二個记录和第三個记录的关键字。依次类推,直至第n-1個记录和第n個记录的关键字進行比较為止。上述過程称做第一趟冒泡排序,其成果使得关键字最大的记录被安顿到最终一种记录的位置上。然後進行第二趟冒泡排序,對前n-1個记录進行同样操作,其成果是使关键字次大的记录被安顿到第n-1個记录的位置上;(4)迅速排序(Quicksort)是對冒泡排序的一种改善。它的基本思想是,通過一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别對這两部分记录继续進行排序,以到达整個序列有序。一趟迅速排序的详细做法是:附设两個指针low和high,它們的初值分别為low和high,设枢轴记录的关键字為pivotkey,则首先從high所指位置起向前搜索找到第一种关键字不不小于pivotkey的记录和枢轴记录互相互换,然後從low所指位置起向後搜索,找到第一种关键字不小于pivotkey的记录和枢轴记录互换,反复這两步直至low=high為止;(5)选择排序(Selectionsort)的基本思想是:每一趟在n-i+1(i=1,2,…,n-1)個记录中选用关键字最小的记录作為有序序列中的第i個记录。其中最简朴的是简朴选择排序。一趟简朴选择排序的操作為:通過n-i次的关键字间的比较,從n-i+1個记录中选出关键字最小的记录,并和第i個记录互换之;(6)堆排序(HeapSort)堆排序是一种树形选择排序,是對直接选择排序的有效改善。堆顶為根,其他為左子树、右子树。初始時把要排序的数的序列看作是一棵次序存储的二叉树,调整它們的存储次序,使之成為一种堆,這時堆的根节點的数最大。然後将根节點与堆的最终一种节點互换。然後對前面(n-1)個数重新调整使之成為堆。依此类推,直到只有两個节點的堆,并對它們作互换,最终得到有n個节點的有序序列。從算法描述来看,堆排序需要两個過程,一是建立堆,二是堆顶与堆的最终一种元素互换位置。因此堆排序有两個函数构成。一是建堆的渗透函数,二是反复调用渗透函数实現排序的函数。1.2基本规定:通過課程设计,理解并初步掌握设计、实現较大系统的完整過程,包括系统分析、编码设计、系统集成、以及调试分析,纯熟掌握数据构造的选择、设计、实現以及操作措施,為深入的应用開发打好基础。由于程序中所需的数据都是有函数随机生成的整形数,不需要顾客自已输入,顾客只需要對演示程序中的某些提醒做某些必要的选择以便于程序的执行。程序输出的是對六种排序做的某些比较,即输出六种排序各排序過程中所比较的数据的個数,互换的数据的次数,和排序完毕所用的時间。六种排序依次在计算机终端上显示,便于顾客观测。输入值的范围等价于程序中随机生成的数据的個数,即待排序表的表長不不不小于100,至少要用5组不一样的输入数据体比较,比较的指標為:有关键字参与的比较次数和关键字的移動次数(关键字互换计為3次的移動),在该程序中,随机生成的数据個数被初始化為了10000,数据越大就越轻易比较。1.3任务功能:亲自動手結合数据机构有关知识,运用C語言设计、实現内部排序算法的性能分析系统:通過顾客在自已键入的n的数目,用伪随机数产生n個随机整数,對這些数進行如下六种措施進行排序:起泡排序、直接插入排序、简朴选择排序、迅速排序、希尔排序、堆排序,并對這些排序做比较,在屏幕上输出每种排序措施所比较的次数,互换的次数,和用掉的時间。并规定此程序具有如下功能和特性:规范性:规定顾客输入的数据是任意的正整数n,程序输出的比较次数、移動次数和所用時间都是以正整数的形式体現;任意性:系统通過伪随机程序产生的任意随机整数,分别用不一样的排序措施對其進行升序排序,給出每种措施的比较次数、移動次数或所用時间;友好性:界面要友好,输入有提醒,尽量展示人性化;可讀性:源程序代码清晰、有层次;强健性:顾客输入非法数据時,系统要及時給出警告信息;按规定画出程序流程图、编写程序代码、运行测试。概要设计2.1程序所需的抽象数据类型的定义:typedefintBOOL;//阐明BOOL是int的别名typedefstructStudentData{intnum;//寄存关键字}Data;typedefstructLinkList{intLength;//数组長度DataRecord[MAXSIZE];//用数组寄存所有的随机数}LinkListintRandArray[MAXSIZE];//定义長度為MAXSIZE的随机数组voidRandomNum()//随机生成函数voidInitLinkList(LinkList*L)//初始化链表BOOLLT(inti,intj,int*CmpNum)//比较i和j的大小voidDisplay(LinkList*L)//显示输出函数voidShellSort(LinkList*L,intdlta[],intt,int*CmpNum,int*ChgNum)//希尔排序voidQuickSort(LinkList*L,int*CmpNum,int*ChgNum)//迅速排序voidHeapSort(LinkList*L,int*CmpNum,int*ChgNum)//堆排序voidBubbleSort(LinkList*L,int*CmpNum,int*ChgNum)//冒泡排序voidSelSort(LinkList*L,int*CmpNum,int*ChgNum)//选择排序voidCompare(LinkList*L,int*CmpNum,int*ChgNum)//比较所有排序2.2主程序的流程图為:開始界面開始界面随机函数产生随机数随机函数产生随机数Compare比较各类排序Compare比较各类排序直接插入排序希尔排序堆排序选择排序冒泡排序迅速排序直接插入排序希尔排序堆排序选择排序冒泡排序迅速排序比较各排序比较各排序输出数据输出数据結束結束图2-2程序流程图2.3各程序模块之间的层次(调用)关系:主函数main()主函数main()Display显示输出Compa-Display显示输出Compa-re比较六种排序Showthemenu显示主界面InitLinkList(LinkList*L)初始化链表set定义或初始化变量图2-3-1主程序功能模块图内部排序算法的比较内部排序算法的比较HeapSort堆排序Setli-nklistHeapSort堆排序Setli-nklist初始化链表rand-omnumbers随机生成数据Com-pare比较所有排序SelSort选择排序Bubb-leSort冒泡排序QuickSort迅速排序Shellsort希尔排序图2-3-2外部功能模块调用关系图详细设计3.1主程序的伪码算法:begin//算法開始{ intselect等于0; intdlta為数组元素為3的一维数组; intIndata為数组元素為1的一维数组; intCmpNum[6],ChgNum[6];//CnpNum数组時比较次数,ChgNum是互换次数 intSpendTime等于0;//intTempTime;定义线性链表L;初始化线性链表L; memset(CmpNum,0,sizeof(CmpNum)); memset(ChgNum,0,sizeof(ChgNum));输出“******************************************” 另起一行输出“数据构造課程设计” 另起一行输出“——内部排序算法的比较” 另起一行输出“Madeby刘雅囡.07.08”另起一行输出“Plesepressentertocontinue...”另起一行输出“******************************************” getchar(); system("cls.exe"); 另起一行输出“正在计算,請稍等” Compare(從线性链表取值,比较次数,互换次数);//比较所有排序输出所有排列 另起一行输出“比较結束,請按回車键!” getchar();}//程序結束3.2其他模块部分伪代码:typedefintBOOL;//定义標识符关键字BOOL别名為inttypedefstructStudentData//记录数据类型{ intnum;//定义关键字类型}Data;//排序的记录数据类型定义typedefstructLinkList//记录线性表{ intLength;//定义表長 DataRecord[MAXSIZE];//表長记录最大值}LinkList;//排序的记录线性表类型定义intRandArray[MAXSIZE];//定义随机数组类型及最大值/******************随机生成函数********************/voidRandomNum(){ inti; srand((int)time(NULL));//用伪随机数程序产生伪随机数 for(i=0;i不不小于MAXSIZE;i++) RandArray[i]<=(int)rand();返回;}/*****************初始化链表**********************/voidInitLinkList(LinkList*L)//初始化链表{ inti; memset(L,0,sizeof(LinkList)); RandomNum(); for(i=0;i不不小于<MAXSIZE;i++) L->Record[i].num<=RandArray[i]; L->Length<=i;}BOOLLT(inti,intj,int*CmpNum){ (*CmpNum)++;若i<j)则返回TRUE;否则返回FALSE;}voidDisplay(LinkList*L){ FILE*f;//定义一种文献指针f inti;若打開文献的指令不為空则//通過文献指针f打開文献為条件判断 {//与否应當打開文献输出“can'topenfile”; exit(0); } for(i=0;i不不小于L->Length;i++) fprintf(f,"%d\n",L->Record[i].num);通過文献指针f关闭文献;}3.3函数的调用关系图:主函数main()主函数main()生成随机数srand()生成随机数srand()SelSort选择排序Bubb-SelSort选择排序Bubb-leSort冒泡排序HeapSort堆排序QuickSort迅速排序ShellSort希尔排序InsertSort插入排序Display显示成果ChushihualianbiaoDisplay显示成果ChushihualianbiaoInitLinkList初始化链表ChushihualianbiaoRandomNum产生随机数ChushihualianbiaoLT比较大小Chushihualianbiao图3-3函数的调用关系图调试分析4.1调试過程中碰到的問題及經验体會:在本次程序的编写和调试過程中,我曾多次修改代码,并根据调试显示的界面一次次调整代码。在调试成功之前,我的程序由于3個錯误而無法运行,在通過完整并且仔细的检查後,发現3处錯误分别是没有定义变量就直接套用、忘掉加指针符号、忘掉在嵌套語句後加大括号,這些看似不显眼的小問題却导致整個程序無法运行,因此我认為在编程過程中要及其严谨,尽量少犯或防止犯語法錯误,保证代码的完整性。4.2算法的時空分析:1.稳定性比较:插入排序、冒泡排序、简朴选择排序及其他线形排序是稳定的;希尔排序、迅速排序、堆排序是不稳定的。2.時间复杂性比较:插入排序、冒泡排序、选择排序的時间复杂性為O(n2);其他非线形排序的時间复杂性為O(nlog2n);线形排序的時间复杂性為O(n)。3.辅助空间的比较:线形排序的辅助空间為O(n),其他排序的辅助空间為O(1)。4.其他比较:插入、冒泡排序的速度较慢,但参与排序的序列局部或整体有序時,這种排序能到达较快的速度。反而在這种状况下,迅速排序反而慢了:當n较小時,對稳定性不作规定期宜用选择排序,對稳定性有规定期宜用插入或冒泡排序;當n较大時,关键字元素比较随机,對稳定性没规定宜用迅速排序。當n较大時,关键字元素也許出現自身是有序的,對稳定性有规定期,空间容許的状况下,宜用归并排序。當n较大時,关键字元素也許出現自身是有序的,對稳定性没有规定期宜用堆排序。顾客使用阐明(1)用VC6.0打開D:\VC6\下的“内部排序算法的比较.c”程序运行代码,或者打開D:\VC6\Debug文献夹下的“内部排序算法的比较.exe”可执行文献,進入如下界面;(2)按照打開主界面的规定按回車键继续,進入如下界面;(3)等待计算成果,出現如下界面;(4)按回車键結束,关闭程序测试成果测试成果及其分析:通過本次程序的运行,得到数据:插入排序:比较的次数為25114496,互换的次数為25094525,花费的時间為1203ms;希尔排序:比较的次数為3834939,互换的次数為3782098,花费的時间為187ms;迅速排序:比较的次数為153398,互换的次数為62804,花费的時间為0ms;堆排序:比较的次数為235273,互换的次数為124235,花费的時间為16ms;冒泡排序:比较的次数為49995000,互换的次数為27537172,花费的時间為2969ms;选择排序:比较的次数為50005000,互换的次数為9988,花费的時间為1656ms。算法效率是根据算法执行的時间来看的,從上面的数据来看,虽然插入排序的算法简洁,轻易实現,不過從它执行的時间1203ms来看它的效率并不是很高,并且比较次数和互换次数都比较多,在這六种排序中效率是很底的;希尔排序的時间复杂度较直接排序低,在六种内部排序中效率居中;分析冒泡排序的效率,轻易看出,若初始序列為“正序”序列,则只進行一趟排序,在排序過程中進行n-1次关键字的比较,反之,则需進行n-1趟排序,總的時间复杂度為O(n2),在该程序中,冒泡排序所花费的時间為4360,是所有排序中花费最多的,可見效率是很底的。迅速排序是對冒泡排序的一种改善,它所用的時间几乎為0,互换的比较的次数都比较少;堆排序仅次于迅速排序,花费的時间只有16ms。由以上讨论可知,從時间上看,迅速排序的平均性能都优于其他5种排序。算法時间复杂度分析如下:1、直接插入排序:當文献的初始状态不一样步,直接插入排序所花费的時间是有很大差异的。最佳状况是文献初态為正序,此時算法的時间复杂度為O(n),最壞状况是文献初态為反序,對应的時间复杂度為O(n2),算法的平均時间复杂度是O(n2);2、选择排序是不稳定的,算法复杂度為O(n2);3、迅速排序是不稳定的主体算法時间运算量约O(log2n),划分子区函数运算量约O(n),因此總的時间复杂度為O(nlog2n),它显然优于冒泡排序O(n2);4、希尔排序是不稳定的,算法复杂度是n1.25~1.6*n1.25;5、冒泡排序是稳定的,時间复杂度為O(n2);6、堆排序是不稳定的。對多种表長和测试组数進行了测试,程序运行正常。分析实测得到的数值,6种排序算法的特點小結如下:测试插入排序希尔排序迅速排序堆排序冒泡排序选择排序比较次数第三多越乱(逆)越多少乱否差异小少乱否差异小稍多乱否差异很小最多越乱(逆)越多越乱(逆)越多第二多与乱否無关移動次数第二多越乱(逆)越多约為迅速排序的两倍第二少乱否差异较小稍多乱否差异很小最多越乱(逆)越多至少正和逆序少(1)若n较小(如n≤50),可采用直接插入或直接选择排序。當记录规模较小時,直接插入排序很好;否则由于直接选择移動的记录数少于直接插人,应选直接选择排序為宜;(2)若文献初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的迅速排序為宜;(3)若n较大,则应采用時间复杂度為O(nlgn)的排序措施:迅速排序、堆排序或归并排序;迅速排序是目前基于比较的内部排序中被认為是最佳的措施,當待排序的关键字是随机分布時,迅速排序的平均時间最短;堆排序所需的辅助空间少于迅速排序,并且不會出現迅速排序也許出現的最壞状况。這两种排序都是不稳定的。参照文献:[1]谭浩强.C程序设计(第二版).北京:清华大學出版社,[2]谭浩强.C程序设计试題汇编.北京:清华大學出版社,[3]谭浩强.C程序设计題解与上机指导(第二版).北京:清华大學出版社,[4]严蔚敏,陈文博.数据构造及应用算法教程.北京:清华大學出版社,[5]严蔚敏,吴伟民.数据构造(C語言版).北京:清华大學出版社,[6]吴文虎.程序设计基础.北京:清华大學出版社,[7]顾元刚.数据构造简要教程.南京:東南大學出版社等,[8]郭福顺,王晓芬,李莲治.数据构造(修订本).大连:大连理工大學出版社,1997附录带注释的源程序:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>#include<windows.h>#include<winbase.h>#defineMAXSIZE10000//线性表中最多元素個数#defineTRUE1#defineFALSE0typedefintBOOL;//定义標识符关键字BOOL别名為inttypedefstructStudentData//记录数据类型{ intnum;//定义关键字类型}Data;//排序的记录数据类型定义typedefstructLinkList//记录线性表{ intLength;//定义表長 DataRecord[MAXSIZE];//表長记录最大值}LinkList;//排序的记录线性表类型定义intRandArray[MAXSIZE];//定义随机数组类型及最大值/******************随机生成函数********************/voidRandomNum()//随机生成函数{ inti; srand((int)time(NULL));//用伪随机数程序产生伪随机数 for(i=0;i<MAXSIZE;i++) RandArray[i]=(int)rand(); return;}/*****************初始化链表**********************/voidInitLinkList(LinkList*L)//初始化链表{ inti; memset(L,0,sizeof(LinkList)); RandomNum();//调用随机函数 for(i=0;i<MAXSIZE;i++) L->Record[i].num=RandArray[i]; L->Length=i;}BOOLLT(inti,intj,int*CmpNum){ (*CmpNum)++; if(i<j)returnTRUE; returnFALSE;}voidDisplay(LinkList*L){ FILE*f;//定义一种文献指针f inti; if((f=fopen("SortRes.txt","w"))==NULL)//通過文献指针f打開文献為条件判断 {//与否应當打開文献 printf("can'topenfile\n"); exit(0); } for(i=0;i<L->Length;i++) fprintf(f,"%d\n",L->Record[i].num); fclose(f);//通過文献指针f关闭文献}/******************************冒泡排序*******************************/voidBubbleSort(LinkList*L,int*CmpNum,int*ChgNum){ inti,j; Datatemp; for(i=0;i<MAXSIZE-1;i++) { for(j=0;j<MAXSIZE-i-1;j++) { if(!LT(L->Record[j].num,L->Record[j+1].num,CmpNum)) { (*ChgNum)++; memcpy(&temp,&L->Record[j],sizeof(Data)); memcpy(&L->Record[j],&L->Record[j+1],sizeof(Data)); memcpy(&L->Record[j+1],&temp,sizeof(Data)); } } }}/******************************选择排序*******************************/intSelectMinKey(LinkList*L,intk,int*CmpNum){ intMin=k; for(;k<L->Length;k++) { if(!LT(L->Record[Min].num,L->Record[k].num,CmpNum)) Min=k; } returnMin;}voidSelSort(LinkList*L,int*CmpNum,int*ChgNum){ inti,j; Datatemp; for(i=0;i<L->Length;i++) { j=SelectMinKey(L,i,CmpNum); if(i!=j) { (*ChgNum)++; memcpy(&temp,&L->Record[i],sizeof(Data)); memcpy(&L->Record[i],&L->Record[j],sizeof(Data)); memcpy(&L->Record[j],&temp,sizeof(Data)); } }}/****************************迅速排序******************************/intPartition(LinkList*L,intlow,inthigh,int*CmpNum,int*ChgNum){ DataTemp; intPivotKey; memcpy(&Temp,&L->Record[low],sizeof(Data)); PivotKey=L->Record[low].num; while(low<high) { while(low<high&&L->Record[high].num>=PivotKey) { high--; (*CmpNum)++; } (*ChgNum)++; memcpy(&L->Record[low],&L->Record[high],sizeof(Data)); while(low<high&&L->Record[low].num<=PivotKey) { low++; (*CmpNum)++; } (*ChgNum)++; memcpy(&L->Record[high],&L->Record[low],sizeof(Data)); } memcpy(&L->Record[low],&Temp,sizeof(Data)); returnlow;}voidQSort(LinkList*L,intlow,inthigh,int*CmpNum,int*ChgNum){ intPivotLoc=0; if(low<high) { PivotLoc=Partition(L,low,high,CmpNum,ChgNum); QSort(L,low,PivotLoc-1,CmpNum,ChgNum); QSort(L,PivotLoc+1,high,CmpNum,ChgNum); }}voidQuickSort(LinkList*L,int*CmpNum,int*ChgNum){ QSort(L,0,L->Length-1,CmpNum,ChgNum);}/*********************希尔排序*************************/voidShellInsert(LinkList*L,intdk,int*CmpNum,int*ChgNum){ inti,j; DataTemp; for(i=dk;i<L->Length;i++) { if(LT(L->Record[i].num,L->Record[i-dk].num,CmpNum)) { memcpy(&Temp,&L->Record[i],sizeof(Data)); for(j=i-dk;j>=0&<(Temp.num,L->Record[j].num,CmpNum);j-=dk) { (*ChgNum)++; memcpy(&L->Record[j+dk],&L->Record[j],sizeof(Data)); } memcpy(&L->Record[j+dk],&Temp,sizeof(Data)); } }}voidShellSort(LinkList*L,intdlta[],intt,int*CmpNum,int*ChgNum){ intk; for(k=0;k<t;k++) ShellInsert(L,dlta[k],CmpNum,ChgNum);}/******************************堆排序******************************/voidHeapAdjust(LinkList*L,ints,intm,int*CmpNum,int*ChgNum){ DataTemp; intj=0; s++; memcpy(&Temp,&L->Record[s-1],sizeof(Data)); for(j=2*s;j<=m;j*=2) { if(j<m&<(L->Record[j-1].num,L->Record[j].num,CmpNum))++j; if(!LT(Temp.num,L->Record[j-1].num,CmpNum))break; (*ChgNum)++; memcpy(&L->Record[s-1],&L->Record[j-1],sizeof(Data)); s=j; } memcpy(&L->Record[s-1],&Temp,sizeof(Data));}voidHeapSort(LinkList*L,int*CmpNum,int*ChgNum){ inti=0; DataTemp; for(i=L->Length/2-1;i>=0;i--) HeapAdjust(L,i,L->Length,CmpNum,ChgNum); for(i=L->Length;i>1;i--) { memcpy(&Temp,&L->Record[0],sizeof(Data)); (*ChgNum)++; memcpy(&L->Record[0],&L->Record[i-1],sizeof(Data)); memcpy(&L->Record[i-1],&Temp,sizeof(Data)); HeapAdjust(L,0,i-1,CmpNum,ChgNum); }}/*****************************比较所有排序******************************/voidCompare(LinkList*L,int*CmpNum,int*ChgNum){ intTempTime,i; intSpendTime; intdlta[3]={7,3,1}; intIndata[1]={1}; TempTime=(int)GetTickCount(); ShellSort(L,Indata,1,&CmpNum[0],&ChgNum[0]); SpendTime=(int)GetTickCount()-TempTime; printf("\n\t====================================================="); printf("\n\n\t插入排序:"); printf("\n\t比较的次数=%d\t互换的次数=%d\t所用的時间=%dms",CmpNum[0],ChgNum[0],SpendTime); for(i=0;i<MAXSIZE;i++) L->Record[i].num=RandArray[i];//随机数列复位TempTime=(int)GetTickCount(); ShellSort(L,dlta,3,&CmpNum[1],&ChgNum[1]); SpendTime=(int)GetTickCount()-TempTime; printf("\n\n\t希尔排序:"); printf("\n\t比较的次数=%d\t互换的次数=%d\t所用的時间=%dms",CmpNum[1],ChgNum[1],SpendTime); for(i=0;i<MAXSIZE;i++) L->Record[i].num=RandArray[i];//随机数列复位TempTime=(int)GetTickCount(); QuickSort(L,&CmpNum[2],&ChgNum[2]); SpendTime=(int)GetTickCount()-TempTime;printf("\n\n\t迅速排序:"); printf("\n\t比较的次数=%d\t互换的次数=%d\t所用的時间=%dms",CmpNum[2],ChgNum[2],SpendTime); for(i=0;i<MAXSIZE;i++) L->Record[i].num=RandArray[i];//随机数列复位TempTime=(int)GetTickCount(); HeapSort(L,&CmpNum[3],&ChgNum[3]); SpendTime=(int)GetTickCount()-TempTime;printf("\n\n\t堆排序:"); printf("\n\t比较的次数=%d\t互换的次数=%d\t所用的時间=%dms",CmpNum[3],ChgNum[3],SpendTime); for(i=0;i<MAXSIZE;i++) L-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 做防水协议书范本
- 立春宣传课件图片
- 2025年磁盘用微晶玻璃基板项目合作计划书
- 2025年循环流化床锅炉合作协议书
- 2025年高收缩腈纶项目合作计划书
- 2025版酒店餐厅场地租赁及美食合作合同
- 二零二五年度贷款购买别墅买卖合同细则
- 二零二五版山林资源开发合作协议范本
- 2025版06289工程招标与合同法适用及合规性审查合同
- 2025版个人教育贷款补充协议示范书
- 2025山西晋城市乡村振兴投资开发有限公司招聘5人笔试历年参考题库附带答案详解
- 深静脉血栓形成的诊断和治疗指南第三
- 2026年中考英语复习:338条核心短语背诵卡+默写卡
- 2025年合肥高新创业投资管理合伙企业招聘考试笔试试题(含答案)
- 2025-2030中国新能源汽车充电桩行业供需状况及投资战略规划分析报告
- 肿瘤患者血象解读与临床意义
- 药物过敏性休克的急救护理讲课件
- 苏科版2025年七升八数学暑假衔接讲义第05讲线段、角的轴对称性(学生版+解析)
- 2025年福建省中考语文试卷真题(含标准答案)
- 2024江西现代职业技术学院招聘笔试真题带答案详解
- (高清版)DB31∕T 1564-2025 企业实验室危险化学品安全管理规范
评论
0/150
提交评论