沈阳航空航天大学课程设计-排序算法比较

合集下载

排序方法比较程序的设计与实现程序设计报告

排序方法比较程序的设计与实现程序设计报告

沈阳航空航天大学课程设计报告课程设计名称:C语言课程设计课程设计题目:排序方法比较程序的设计与实现院(系):计算机学院专业:计算机科学与技术班级:1434010105学号:143401010518姓名:韩冰指导教师:夏秀峰完成日期:2015年6月23日沈阳航空航天大学课程设计报告目录第1章概要设计 (1)1.1题目的内容与要求 (1)1.2总体结构 (1)第2章详细设计 (2)2.1主模块 (2)2.2显示模块 (2)2.3分词模块 (4)2.4替换模块............................................................................... 错误!未定义书签。

第3章调试分析 . (5)第4章使用说明与执行结果 (6)参考文献 (11)附录(程序清单) (12)签。

第1章概要设计第1章概要设计1.1题目的内容与要求课程设计的内容是设计一个比较不同排序方法数据交换次数与数据比较次数的程序要求:(1)输入要生成的数据个数,并生成相应数量的随机数(2)使用不同的排序法对随机数组进行排序。

并且比较排序期间数据的交换次数与比较次数(3)比较结束后输出结果。

结果中包括使用该排序法的交换次数、比较次数及使用时间(4)采用VC环境进行调试运行。

1.2总体结构本程序主要分为二个模块(模块图见图1.1):显示模块,排序模块,显示模块:输入要生成的随机数个数。

然后显示选项供用户进行选择。

排序模块:根据用户选择的排序算法。

对随机数进行排序。

图1.1 功能模块图第2章详细设计2.1主模块控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块,实现各项功能,流程如图2.1所示。

图2.1 主模块流程图注释:1、输入生成随机数是胡良2.、无限循环进行,打印主菜单,输入choose值,判断,进行各项操作。

2.2显示模块输入生成随机数数量后显示相应功能界面如图2.2所示。

数据结构课程设计各种排序算法比较附带源代码.doc

数据结构课程设计各种排序算法比较附带源代码.doc

数据结构课程设计各种排序算法比较附带源代码.课程设计课程:数据结构题目:排序算法比较专业班级:姓名:学号:设计时间:指导教师:设计题目排序算法比较运行环境(软、硬件环境)操作系统windows运行环境vc6.0算法设计的思想大架构采用模块化编程的思想,将每个不同的功能分别写成不同的子程序,分别进行封装构成各个小的模块,最后将各个模块组合起来。

在每个子程序的编写过程中特事特办面对不同的预想功能采取不同的数据结构不同的算法实现。

总体算法思想为按功能分块,依照预想功能实现顺序拼装。

具体思想请见流程图。

流程图开始功能流程图请用户输入将要生成随机数的上下限,按照上下限生成30000个随机数并输出随机生成随机数并输出请用户选择想要使用的排序方法计算其使用的排序时间并输出询问用户是否继续运行程序否是输出结束语句结束程序编写流程图开始定义全局变量a[30000],aaaa[3000],结构体数组aa[30000]用来存放随机数,choice,choice1编写各个子算法子函数,和时间选择函数,既菜单选择函数,部分需要声明的函数在头文件下声明。

各模块依据功能流程图组装结束算法流程图开始局部变量l,h收集上下限,sjs()将用户选择数值赋值于choice,将choice作为参数调用time(),用if语句判断选择将要调用的算法子函数main1()menu()choice1==1Choice1==2结束算法设计分析程序总体采用模块化设计,程序间通过传参和调用进行有机组合。

这样的总体布局将将各个功能隔离开来,每个模块负责每个模块的功能,使得程序的布局简单明了。

且子程序只有在被调用时才会运行大大节约系统资源减少了运算时间。

同时由于功能的隔离使得程序的扩展性大大提高,无论程序将要任何改动时,都会方便很多。

源代码#include#include#includeint a[30000];int choice;int choice1;struct xlx{ int key; int link;} aa[30000];int aaa[300000];void main1();/*************************直接插入排序函数***********************/void direct(int a[]){printf("\n现在使用直接插入排序法进行排序:\n");int i,j,w; for(i=0;i=0;j-数据结构题目:排序算法比较专业班级:姓名:学号:设计时间:指导教师:设计题目排序算法比较运行环境(软、硬件环境)操作系统windows运行环境vc6.0算法设计的思想大架构采用模块化编程的思想,将每个不同的功能分别写成不同的子程序,分别进行封装构成各个小的模块,最后将各个模块组合起来。

数据结构课程设计—内部排序算法比较

数据结构课程设计—内部排序算法比较

数据结构课程设计—内部排序算法比较在计算机科学领域中,数据的排序是一项非常基础且重要的操作。

内部排序算法作为其中的关键部分,对于提高程序的运行效率和数据处理能力起着至关重要的作用。

本次课程设计将对几种常见的内部排序算法进行比较和分析,包括冒泡排序、插入排序、选择排序、快速排序和归并排序。

冒泡排序是一种简单直观的排序算法。

它通过重复地走访要排序的数列,一次比较两个数据元素,如果顺序不对则进行交换,并一直重复这样的走访操作,直到没有要交换的数据元素为止。

这种算法的优点是易于理解和实现,但其效率较低,在处理大规模数据时性能不佳。

因为它在最坏情况下的时间复杂度为 O(n²),平均时间复杂度也为O(n²)。

插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入,直到整个序列有序。

插入排序在数据量较小时表现较好,其平均时间复杂度和最坏情况时间复杂度也都是 O(n²),但在某些情况下,它的性能可能会优于冒泡排序。

选择排序则是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。

以此类推,直到全部待排序的数据元素排完。

选择排序的时间复杂度同样为O(n²),但它在某些情况下的交换操作次数可能会少于冒泡排序和插入排序。

快速排序是一种分治的排序算法。

它首先选择一个基准元素,将数列分成两部分,一部分的元素都比基准小,另一部分的元素都比基准大,然后对这两部分分别进行快速排序。

快速排序在平均情况下的时间复杂度为 O(nlogn),最坏情况下的时间复杂度为 O(n²)。

然而,在实际应用中,快速排序通常表现出色,是一种非常高效的排序算法。

归并排序也是一种分治算法,它将待排序序列分成若干个子序列,每个子序列有序,然后将子序列合并成一个有序序列。

排序算法问题课程设计

排序算法问题课程设计

排序算法问题课程设计一、课程目标知识目标:1. 理解排序算法的基本概念,掌握冒泡排序、选择排序、插入排序等常见排序算法的原理和步骤。

2. 能够分析不同排序算法的时间复杂度和空间复杂度,理解其适用场景。

3. 了解排序算法在实际问题中的应用,如查找最大(小)元素、数据去重、有序数组合并等。

技能目标:1. 能够运用所学排序算法解决实际问题,编写相应的程序代码,并进行调试与优化。

2. 培养良好的编程习惯,提高代码的可读性和可维护性。

3. 学会通过分析问题特点,选择合适的排序算法,提高解决问题的效率。

情感态度价值观目标:1. 培养学生对算法学习的兴趣,激发他们主动探索排序算法的优缺点和改进方向的热情。

2. 培养学生的团队协作精神,学会在合作中交流、分享、共同解决问题。

3. 培养学生面对问题时的耐心和毅力,养成良好的学习习惯,形成积极向上的学习态度。

本课程设计针对初中或高中年级学生,结合计算机科学课程中的排序算法部分,注重理论与实践相结合。

课程性质为理论课与实践课相结合,通过讲解、示例、实践等教学手段,使学生掌握排序算法的基本知识,提高编程能力和问题解决能力。

根据学生特点和教学要求,课程目标具体、可衡量,有利于教师进行教学设计和评估。

将目标分解为具体学习成果,有助于学生明确学习目标,提高学习效果。

二、教学内容1. 排序算法基本概念:介绍排序算法的定义、作用和分类,结合教材相关章节,让学生了解排序在计算机科学中的重要性。

2. 常见排序算法原理与步骤:- 冒泡排序:讲解冒泡排序的原理、步骤,分析其时间复杂度和空间复杂度。

- 选择排序:介绍选择排序的原理、步骤,分析其时间复杂度和空间复杂度。

- 插入排序:讲解插入排序的原理、步骤,分析其时间复杂度和空间复杂度。

3. 排序算法的应用场景:结合实际案例,分析不同排序算法在实际问题中的应用,如排序数组查找、有序数组合并等。

4. 排序算法的时间复杂度和空间复杂度分析:讲解如何分析排序算法的复杂度,并通过实例加深理解。

排序算法比较

排序算法比较

排序算法比较在计算机科学中,排序算法是一类重要且基础的算法。

通过对数据进行排序,我们可以更高效地检索、查找以及分析数据。

在实际应用中,我们经常需要比较不同排序算法的性能和效率,以便选择最适合特定任务的排序算法。

本文将对几种常见的排序算法进行比较。

一、冒泡排序冒泡排序是一种简单但效率较低的排序算法。

其基本思想是通过多次交换相邻的元素,将最大(或最小)的元素逐渐“冒泡”到待排序序列的末尾。

具体实现过程如下:从头开始依次比较相邻的两个元素,如果顺序不正确,则进行交换。

重复此过程,直到没有任何交换发生。

冒泡排序的时间复杂度为O(n^2),其中n为待排序序列的长度。

这使得冒泡排序在大规模数据排序时表现较差。

二、插入排序插入排序是一种简单且高效的排序算法。

它的基本思想是将未排序部分的元素依次插入到已排序部分的正确位置,直到全部元素都有序。

具体实现过程如下:将未排序部分的第一个元素插入到已排序部分中的正确位置,然后再将第二个元素插入到已排序部分中,依此类推。

插入排序的时间复杂度为O(n^2),但在实际应用中,插入排序通常要比冒泡排序快得多。

插入排序对于小规模或基本有序的数据集合表现良好。

三、选择排序选择排序是一种简单但不稳定的排序算法。

其基本思想是从未排序部分选择最小(或最大)的元素,将其放到已排序部分的末尾。

具体实现过程如下:从未排序部分中选出最小的元素,将其与未排序部分的第一个元素交换位置,然后将已排序部分的长度加1。

重复此过程,直到全部元素都有序。

选择排序的时间复杂度为O(n^2),与冒泡排序和插入排序相同。

尽管选择排序的性能较差,但由于其实现简单,对于小规模数据集合仍然是一种可用的排序方法。

四、快速排序快速排序是一种高效的排序算法,常被用作标准库中的排序函数实现。

其基本思想是通过分治的策略将待排序序列划分为较小和较大的两个子序列,然后分别对子序列进行递归排序。

具体实现过程如下:选择一个基准元素,通过一趟排序将待排序序列分割为两部分,使得左边部分的元素都小于等于基准元素,右边部分的元素都大于等于基准元素。

课程设计排序和算法分析

课程设计排序和算法分析

课程设计排序和算法分析一、教学目标本课程旨在通过排序和算法分析的学习,让学生掌握排序算法的基本原理和实现方法,培养学生解决问题的能力,提高学生的逻辑思维和编程实践能力。

具体目标如下:1.理解排序算法的概念和作用。

2.掌握常见的排序算法(如冒泡排序、选择排序、插入排序等)的原理和实现。

3.理解算法分析的基本概念和方法。

4.能够运用排序算法解决实际问题。

5.能够分析算法的时间复杂度和空间复杂度。

6.能够运用编程语言实现排序算法。

情感态度价值观目标:1.培养学生对计算机科学的兴趣和热情。

2.培养学生解决问题的积极性和主动性。

3.培养学生团队合作的意识和能力。

二、教学内容本课程的教学内容主要包括排序算法、算法分析和编程实践。

具体安排如下:第1-2节:排序算法的概念和原理。

介绍排序算法的作用,讲解冒泡排序、选择排序和插入排序等常见排序算法的原理和实现。

第3-4节:算法分析的基本概念和方法。

介绍算法分析的目的,讲解时间复杂度和空间复杂度的概念和方法。

第5-6节:编程实践。

让学生运用所学的排序算法解决实际问题,培养学生的编程能力和解决问题的能力。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

1.讲授法:通过讲解排序算法的原理和实现,让学生掌握基本概念和知识。

2.讨论法:通过分组讨论,让学生深入理解排序算法的优缺点和适用场景。

3.案例分析法:通过分析实际问题,让学生学会运用排序算法解决实际问题。

4.实验法:通过编程实践,让学生掌握排序算法的编程实现和算法分析。

四、教学资源为了支持本课程的教学内容和教学方法,我们将选择和准备以下教学资源:1.教材:《数据结构与算法》。

2.参考书:《算法导论》、《排序算法与应用》等。

3.多媒体资料:PPT课件、教学视频等。

4.实验设备:计算机、编程环境等。

5.在线资源:相关论坛、博客、教程等。

五、教学评估本课程的教学评估将采用多元化的评估方式,以全面、客观、公正地评估学生的学习成果。

排序算法的比较课程设计

排序算法的比较课程设计

排序算法的比较课程设计一、课程目标知识目标:1. 学生能理解排序算法的基本概念,掌握冒泡排序、选择排序和插入排序的原理及实现步骤。

2. 学生能分析不同排序算法的优缺点,了解它们在解决实际问题中的应用场景。

3. 学生能运用所学排序算法解决简单的实际问题和编程挑战。

技能目标:1. 学生能通过比较排序算法,培养逻辑思维能力和问题解决能力。

2. 学生能运用编程语言实现排序算法,提高编程实践能力。

3. 学生能在团队协作中,与他人共同分析问题、探讨解决方案,培养沟通与协作能力。

情感态度价值观目标:1. 学生在学习过程中,培养对算法的兴趣和热情,增强学习计算机科学的自信心。

2. 学生通过排序算法的学习,认识到算法在生活中的广泛应用,激发对人工智能和信息技术的好奇心。

3. 学生在探讨排序算法的过程中,遵循社会主义核心价值观,尊重他人观点,弘扬团队精神。

课程性质:本课程为计算机科学领域的一门核心课程,旨在让学生掌握排序算法的基本知识,提高编程实践能力。

学生特点:六年级学生具有一定的计算机基础和编程经验,对算法有一定的了解,但尚需提高。

教学要求:结合学生特点,采用案例教学、任务驱动和小组合作等方法,注重理论与实践相结合,培养学生的编程素养和问题解决能力。

通过分解课程目标为具体的学习成果,为后续教学设计和评估提供依据。

二、教学内容1. 排序算法基本概念:介绍排序的定义、排序算法的稳定性及时间复杂度等基本知识。

- 教材章节:第三章“排序与查找”第一节“排序的基本概念”- 内容列举:排序的定义、稳定性、时间复杂度、空间复杂度。

2. 冒泡排序:讲解冒泡排序的原理、实现步骤及优化方法。

- 教材章节:第三章“排序与查找”第二节“冒泡排序”- 内容列举:冒泡排序原理、实现步骤、时间复杂度、优化方法。

3. 选择排序:介绍选择排序的原理、实现步骤及优缺点。

- 教材章节:第三章“排序与查找”第三节“选择排序”- 内容列举:选择排序原理、实现步骤、时间复杂度、优缺点。

[数据结构课程设计] 排序算法比较

[数据结构课程设计] 排序算法比较

《数据结构与算法分析》课程设计教学任务书一、课程设计的目的数据结构与算法课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。

数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。

学习数据结构与算法是为了将实际问题中涉及的对象在计算机中表示出来并对它们进行处理。

通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。

通过此次课程设计主要达到以下目的:了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

二、课程设计的基本要求1. 独立思考,独立完成:课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝。

2. 做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。

3. 按照课程设计的具体要求建立功能模块,每个模块要求按照如下几个内容认真完成:a)需求分析:在该部分中叙述,每个模块的功能要求b)概要设计:在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)c)详细设计:各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组程序,每个功能模块采用不同的函数实现)源程序要按照写程序的规则来编写。

要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释d)调试分析:测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是那些,问题如何解决?),算法的改进设想课程设计总结:(保存在word文档中)总结可以包括:课程设计过程的收获、遇到的问题、解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容4. 实现的结果必须进行检查和演示,程序源代码和程序的说明文件必须上交,作为考核内容的一部分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

沈阳航空航天大学电子信息工程学院电子设计应用软件训练总结报告学生姓名:专业:电子信息工程班级:04020104学号:2010040201154指导教师:训练时间:2012年7月9日至2012年7月20日电子信息工程学院电子设计应用软件训练任务一、训练任务1、PROTEL 部分(1) 熟练掌握PROTEL 软件的使用;(2) 按要求绘制电路原理图和PCB 版图(能够用自动布线和手动布线相结合);(3) 能够按要求建立元件库和封装库。

2、软件设计部分按照给定的软件设计任务完成相应的软件设计(见软件设计任务部分)。

二、基本要求及说明1、PROTEL 部分(1) 电路原理图图纸尺寸按照给定的任务作相应的设置;(2) 电路原理图见PROTEL 训练任务部分;(3) 按指定电路图在PROTEL 99 中绘制原理图和印制板图;(4) 按照给定要求创建原理图器件和该器件的相应的封装(见PROTEL训练任务部分)。

查找资料, 按资料创建原理图中某一元件及其封装形式;2、软件设计部分按软件设计要求实现相应的功能(见软件设计任务部分)三、按照要求撰写总结报告成绩评定表软件设计部分一.题目分析利用随机函数产生N个随机整数,对这些数进行多种方法进行排序。

要求:至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。

并把排序后的结果保存在不同的文件中。

统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。

二.设计过程(程序流程图)1.定义一个结构体类型的线性表,并将该线性表初始长度设置为0。

2.构造输入随机数并显示在界面上的函数和输出排序之后的数据函数,使排序前和排序后的结果能直观显示在屏幕上。

3.主函数调用直接插入排序函数,通过函数调用将随机数进行排序。

流程图如图11所示。

图11 直接插入排序函数流程图3.主函数调用起泡排序函数,通过函数调用将随机数进行排序。

流程图如图12所示。

4.主函数调用选择排序函数,通过函数调用将随机数进行排序。

流程图如图13所示。

图13 选择排序函数流程图三.调试过程及结果1.开始时程序有许多错误,其中不乏一些低级错误,经过改正后错误明显减少,有几个错误花费了大量时间去修改,经过查资料,与同学探讨,最终程序正确。

图14 开始界面图15产生的随机数图16 直接插入排序的时间图17 起泡排序的时间图18 选择排序的时间2.本程序使用了switch语句,break语句,for循环等语句。

使用了函数调用,宏定义,结构体,和typedefine声明新类型。

四.结论这次的课设让我学会了用不同排序方法通过其排序时间来比较其优良与否。

通过先绘制流程图使我在编程时变得得心应手,并且能很好的理解程序。

在编程时要注意一些细节,犯一点错就会使程序出错,这将造成很大的麻烦。

编程时注意一些细节会让我们事半功倍。

五、参考文献1 吴元斌.C语言程序设计简明教程,[M]北京理工大学出版社 20112 严蔚敏.吴伟民. 《数据结构(C语言版) 》,[M]北京: 清华大学出版社,20093 陈锐, 陈亚民.C语言入门与提高,[M]北京希望电子出版社 20114 罗朝盛.C语言程序设计.第2版,[M]科学出版社 20125 王洪海.C语言程序设计实验指导,[M]人民邮电出版社 2011六.程序清单#include "stdio.h"#include "stdlib.h"#include "time.h"//计时#define ERROR 0#define OK 1#define OVERFLOW -2#define MAXSIZE 99999 //用户自己规定排序的数字的长度typedef int sequenlist;typedef struct{int *r; // r[0]闲置int length; //顺序表的总长度}Sqlist;//构造一个空线性表sequenlist InitSqlist(Sqlist &L){L.r=(int *)malloc(MAXSIZE*sizeof(int)); //分配存储空间if(!L.r) {printf("存储分配失败!");exit(0);} //存储分配失败L.length=0;//初始长度为0return OK;}//输入随机数并显示在界面上sequenlist ScanfSqlist(int &N,Sqlist &L){ int i;printf("请输入要排序的元素个数N: ");scanf("%d",&N);for(i=1;i<=N;i++)L.r[i]=rand(); //随机产生样本整数printf("\n");printf(" 随机产生了%d个随机数,它们是:\n",N);for(i=1;i<=N;i++){printf("%7.2d ",L.r[i]);}printf("\n");L.length=N; //存储线性表的长度return OK;}//下面为输出排序之后的数据函数sequenlist PrintfSqlist(int N,Sqlist L){ int i;printf("数据个数:");//输出数据个数printf("%d\n",L.length);printf("排序后的数据:(从左向右依次增大)\n");//输出数据for(i=1;i<=N;i++)printf("%7.2d ",L.r[i]);printf("\n");return OK;}//下面为直接插入排序函数sequenlist InsertSort(Sqlist &L){int i,j;if(L.length==0){printf("要排序的数据为空!");return ERROR;}for(i=2;i<=L.length;i++){if(L.r[i]<L.r[i-1]) //将L.r[i]插入有序子表{L.r[0]=L.r[i]; //复制为监视哨L.r[i]=L.r[i-1];for(j=i-2;L.r[0]<L.r[j];j--){L.r[j+1]=L.r[j]; //记录后移}L.r[j+1]=L.r[0]; //插入到正确位置}}return OK;}//下面为起泡排序函数sequenlist BubbleSort(Sqlist &L){int i,j,t;if(L.length==0){printf("要排序的数据为空!");return ERROR;}for(i=1;i<=L.length-1;i++){for(j=1;j<=L.length-i;j++){if(L.r[j]>L.r[j+1]) //前面的数据>后面数据时{t=L.r[j+1];L.r[j+1]=L.r[j];L.r[j]=t; //将元素交换}}}return OK;}// 下面为选择排序函数sequenlist ChooseSort(Sqlist &L){int i,j,k,t;if(L.length==0){printf("没有数据!");return ERROR;}for(i=1;i<=L.length;i++) //排序的趟数{k=i;for(j=i+1;j<=L.length;j++) //比较第i个元素以及其后的数据中最小的{if(L.r[j]<L.r[k])k=j;}if(i!=j) //将最小数据赋值给L.r[i]{t=L.r[i];L.r[i]=L.r[k];L.r[k]=t;}}return OK;}//下面为主函数函数void main(){Sqlist L;Sqlist L0;InitSqlist(L); //初始化LInitSqlist(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\n");ScanfSqlist(m,L0);printf("\n");printf(" 1、直接插入排序 \n");printf(" 2、起泡排序 \n");printf(" 3、选择排序\n");printf(" 4、退出该系统\n\n");printf("\n请选择排序的方式,数字1-4: ");scanf("%d",&choice); //选择排序方式赋值choice,用于后面的函数选择while(choice<1||choice>4){printf("输入方式有误。

\n请输入1-3选择排序方式,或者选择4退出系统");scanf("%d",&choice);}while(choice!=4){for(i=1;i<=L0.length;i++)L.r[i]=L0.r[i];L.length=L0.length;switch(choice){case 1://直接插入排序start = clock(); InsertSort(L); finish = clock();break;case 2://起泡排序start = clock();BubbleSort(L);finish = clock();break;case 3://选择排序start = clock();ChooseSort(L);finish = clock();break;case 4://直接退出break;}PrintfSqlist(m,L); //输出数据和L的长度duration = (double)(finish - start) / CLOCKS_PER_SEC; //输出算术时间printf("\n本次排序运算所用的时间是:%lf seconds\n",duration);printf(" 本次排序结束。

相关文档
最新文档