排序效率比较
- 格式:docx
- 大小:35.84 KB
- 文档页数:7
二维数组的排序算法一、引言二维数组是一种常见的数据结构,它由多个一维数组组成。
在实际应用中,我们经常需要对二维数组进行排序,以便更好地处理数据。
本文将介绍几种常用的二维数组排序算法,包括冒泡排序、选择排序和快速排序,以及它们的实现原理和应用场景。
二、冒泡排序冒泡排序是一种简单但效率较低的排序算法,在二维数组中同样适用。
它通过比较相邻元素的大小,并根据需要交换它们的位置,将较大的元素逐渐“冒泡”到数组的末尾。
具体实现过程如下:1. 初始化一个二维数组,包含n行m列的元素。
2. 使用两层循环遍历整个二维数组,外层循环控制比较的轮数,内层循环控制每轮的比较次数。
3. 在内层循环中,比较相邻的两个元素,如果前一个元素比后一个元素大,则交换它们的位置。
4. 每完成一轮比较,最大的元素将“冒泡”到数组的末尾。
5. 重复执行上述步骤,直到所有元素都按照从小到大的顺序排列。
冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1)。
由于其效率较低,通常适用于数据规模较小的情况。
三、选择排序选择排序是一种简单但效率较高的排序算法,同样适用于二维数组。
它通过遍历整个数组,每次选择最小的元素,并将其放到已排序部分的末尾。
具体实现过程如下:1. 初始化一个二维数组,包含n行m列的元素。
2. 使用两层循环遍历整个二维数组,外层循环控制选择的轮数,内层循环控制每轮的比较次数。
3. 在内层循环中,找到当前未排序部分中最小的元素,并记录其下标。
4. 将找到的最小元素与未排序部分的第一个元素交换位置,将其放到已排序部分的末尾。
5. 重复执行上述步骤,直到所有元素都按照从小到大的顺序排列。
选择排序的时间复杂度为O(n^2),空间复杂度为O(1)。
由于每次只需交换一次元素,相比冒泡排序,其效率稍高。
四、快速排序快速排序是一种高效的排序算法,也适用于二维数组。
它通过选择一个基准元素,将数组分成两个子数组,其中一个子数组的所有元素都小于基准元素,另一个子数组的所有元素都大于基准元素。
数量的比较与排序法则在日常生活中,我们经常需要比较和排序各种事物的数量。
无论是工作中的项目任务,还是家庭中的购物清单,数量的比较与排序都是一个不可或缺的部分。
而为了准确地进行数量的比较和排序,我们需要遵循一些特定的法则和原则。
本文将探讨数量的比较与排序法则,并提供一些实际应用的案例。
一、数量的比较法则1.大小比较法则在数量的比较中,我们常常需要确定哪个数量更大或更小。
在对两个数量进行比较时,可以使用以下几种常见的法则。
(1)数值比较法则:直接比较两个数值的大小。
例如,对于两个整数a和b,若a>b,则a大于b。
(2)比例比较法则:比较两个比率或百分比的大小。
例如,如果一辆车的油耗为6升/100公里,另一辆车的油耗为8升/100公里,则前者的油耗较低。
(3)增减比较法则:比较两个数量的增减幅度。
例如,如果今年的销售额比去年增长了20%,而另一家公司的销售额只增长了10%,则前者的增幅较大。
2.质量比较法则在某些情况下,我们需要比较事物的质量而不仅仅是数量。
在这种情况下,我们需要考虑质量对比的相关因素。
(1)重要性因素法则:根据事物的重要性来评估其质量。
例如,在项目管理中,关键任务的完成情况通常被视为更重要的指标。
(2)客观性因素法则:基于客观的标准来评估事物的质量。
例如,在网购中,可以通过客户评价和产品评分来比较不同商品的质量。
二、数量的排序法则在许多情况下,我们需要对一组数量进行排序。
排序可以帮助我们更好地组织和理解数据。
以下是一些常见的数量排序法则。
1.数量大小排序法则根据数量的大小对其进行递增或递减排序。
例如,对于学生成绩列表,可以按照从高到低的顺序进行排序,以识别出学习成绩较好的学生。
2.时间排序法则根据时间因素对数量进行排序。
例如,对于一组事件,可以按照发生的先后顺序进行排序,以便更清楚地了解事件的时间流程。
3.重要性排序法则根据事物的重要性对其进行排序。
例如,在工作中,可以根据任务的重要性和紧急性进行排序,以确定应优先处理的任务。
检索排序技术排序技术是计算机科学中一个重要的概念,它涉及将一组数据按照特定标准进行有序排列的过程。
排序技术在数据处理和算法设计中扮演着至关重要的角色,它可以帮助我们更有效地管理和处理大量数据。
本文将介绍一些常见的排序技术,包括冒泡排序、选择排序、插入排序、快速排序和归并排序等。
冒泡排序是最简单的排序算法之一,它的基本思想是依次比较相邻的两个元素,如果它们的顺序不对则交换它们。
通过多次遍历整个数据集,最大(或最小)的元素会逐渐“浮”到最后(或最前),从而实现整个数据集的排序。
选择排序是另一种简单但高效的排序算法,它的思想是每次选择最小的元素放在已排序部分的末尾。
通过重复这个过程,整个数据集逐渐被排序。
插入排序的思想是将数据集分为已排序和未排序两部分,然后逐个将未排序部分的元素插入到已排序部分的合适位置。
插入排序的效率取决于数据集的初始顺序,如果数据集已经大致有序,则插入排序可以达到较高的效率。
快速排序是一种高效的排序算法,它的基本思想是通过一次排序将数据集分为两部分,左边的部分都小于某个基准值,右边的部分都大于这个基准值。
然后分别对左右两部分递归地进行快速排序,最终整个数据集被排序。
归并排序是一种分治算法,它的思想是将数据集分为两个子集,分别进行排序,然后将排好序的子集合并起来。
归并排序的时间复杂度较低,适用于大规模数据集的排序。
除了上述几种常见的排序技术外,还有许多其他排序算法,如堆排序、希尔排序、计数排序等。
每种排序算法都有其适用的场景和优缺点,选择合适的排序技术可以提高程序的性能和效率。
在实际应用中,我们需要根据数据集的规模、初始顺序、内存占用等因素来选择合适的排序技术。
有时候甚至需要结合多种排序算法来达到更好的排序效果。
排序技术的研究和应用不仅可以提高程序的性能,还可以拓展我们对算法设计和数据处理的认识。
排序技术在计算机科学中具有重要的地位,它是数据处理和算法设计中不可或缺的一部分。
通过了解和掌握各种排序技术,我们可以更好地处理和管理大量数据,提高程序的性能和效率。
生产调度工作安排中的任务优先级排序方法在生产调度工作中,任务的优先级排序方法至关重要。
合理的任务排序方法能够帮助企业提高生产效率、降低成本、增强竞争力。
本文将介绍几种常见的任务优先级排序方法,并分析其适用场景。
一、紧急度与重要度矩阵法紧急度与重要度矩阵法是一种常见且易于操作的任务优先级排序方法。
该方法针对任务的紧急度和重要度进行评估,然后将任务划分到四个象限中,分别为紧急且重要、紧急但不重要、不紧急但重要、不紧急且不重要。
根据任务所在的象限,确定不同的优先级。
这种排序方法适用于针对多个任务进行优先级排序,尤其是在时间紧迫的情况下,可以迅速决策并集中精力应对最紧急且最重要的任务。
二、最短工期法最短工期法是一种基于工期的任务优先级排序方法。
该方法将任务按照完成所需的工期长短进行排序,将工期最短的任务排在前面,工期较长的任务排在后面。
这种排序方法适用于生产调度中需要尽快完成的任务,可以通过合理安排任务顺序,缩短工期,提高生产效率。
三、紧前关系法紧前关系法是一种基于任务之间的先后关系进行排序的方法。
在项目或生产过程中,每个任务都可能存在着前置任务和后置任务,通过分析任务之间的紧前关系,确定其优先级。
这种排序方法适用于需要按照任务先后顺序进行生产调度的场景,能够保证后续任务的顺利进行,提高整体生产效率。
四、价值密度法价值密度法是一种基于任务价值的排序方法。
该方法通过评估任务的价值,将高价值的任务排在前面,低价值的任务排在后面。
这种排序方法适用于需要根据任务的价值和重要程度进行排序的场景,可以确保有限的资源和时间被优先用于高价值的任务,提高整体产出价值。
结语任务优先级排序方法在生产调度工作中起着重要作用。
通过合理选择适合的排序方法,能够使生产工作有条不紊地进行,提高生产效率和企业竞争力。
不同的场景和任务需要采用不同的排序方法,企业可以根据自身情况灵活运用,以达到最佳的生产调度效果。
字典序排序规则字典序,也称为英文字母顺序,是一种使用字母表进行顺序排列的方式。
它也被称为字母表排序法,其有效性已经被大量应用于信息管理、文件组织和文本处理等领域。
字典序是一种以字母表为基础的排序方式,它可以比较任何一个特定的字符串,并以正确的顺序进行排序。
字典序排序,从简单的角度来说,就是把所有出现的字符按照字母表的顺序排列,并以此排序来确定字母表中字符出现的次序。
字典序排序将字母表按照字母顺序依次排列,由a开始,最后以z结束,顺序如下:a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z。
字典序排序按照字母顺序来排列,字母表中可有大写字母、小写字母、数字以及其他特殊符号。
由于大写字母的键位在小写字母的键位之前,因此大写字母会被首先显示出来,比如“A-Za-z”,这样先被显示出来的字母就是A,而且,比如“0-9A-Za-z”,这样先被显示出来的字母就是0。
字典序排序可以对英文字母及多种字符进行排列,但是只有当所有字符都处于统一的字符集中才能有效地实施这种排序。
比如,如果所有字符都是中文的话,就不能使用字典序排序法。
字典序排序比较的的是字符的拼写顺序,而不是字符的语义意义。
这种排序方式一般使用于一些信息类或文件文本的参考目录,因为这样可以使用字典序比较查找的效率更高,它广泛地应用在数据库和文件管理领域。
字典序排序与其他排序方式所不同的是,它不会重复叠加排序,即便是在一些特定场景下,字典序在短时间内也能达到排序的效果,它也不消耗多余的时间。
字典序排序是利用字母表对字符进行排序的一种方式,它可以有效的节省时间和空间,提高查找效率,被广泛应用于信息管理、文件组织和文本处理等领域。
字典序排序比较简便,相比其他排序方式,它具有较高的效率,应用范围广泛,因此得到了广大用户的认可。
数字的顺序比较从小到大和从大到小数字在我们日常生活中扮演着重要的角色。
无论是计算机科学领域的编程语言,还是数学领域的算术运算,数字的顺序比较都是一项重要的操作。
在本文中,我们将探讨数字的顺序比较,即从小到大和从大到小。
一、从小到大的顺序比较从小到大的顺序比较是我们最为常见的方式。
当我们需要对数字进行排序或者比较大小时,我们通常按照从小到大的顺序进行操作。
这种排序方式使得数字从最小的开始,逐渐增大,直至最大。
在计算机科学中,从小到大的顺序比较是一项基本的算法操作。
常用的排序算法,如冒泡排序、插入排序和快速排序,都是按照从小到大的顺序进行排序的。
这些算法通过比较相邻元素的大小,并根据比较结果进行交换或移动位置,最终实现整个序列的从小到大排序。
除了排序算法外,从小到大的顺序比较在日常生活中也经常出现。
例如,我们购物时需要按照价格从低到高进行排序,以便作出更合理的消费决策。
另外,在学习中,我们也会按照学生的成绩从低到高进行排序,以便评估他们的学习状况和制定相应的教学策略。
二、从大到小的顺序比较与从小到大的顺序比较相反,从大到小的顺序比较也有其特殊的应用场景。
在一些特定的情况下,我们需要对数字进行从大到小的排序或者比较。
在计算机科学领域,从大到小的顺序比较同样被广泛使用。
例如,在某些算法中,我们需要将数字按照从大到小的顺序进行排序,以便更高效地处理数据。
此外,在一些特殊的数据结构中,如最大堆和优先队列,元素的插入和移除操作通常是按照从大到小的顺序进行的。
在实际应用中,从大到小的顺序比较也很常见。
例如,在股票交易中,我们可以按照股票的市值从大到小进行排序,以便了解市场上最具价值的股票。
另外,在排行榜中,我们也经常会看到将选手按照得分从高到低进行排列。
三、综合比较除了从小到大和从大到小的顺序比较,有时我们还需要综合考虑其他因素进行排序。
在实际应用中,数字的比较可能不仅仅基于大小,还可能涉及其他属性。
例如,在一个学生综合评价中,我们可能需要将学生按照成绩从高到低排序,但同时也需要考虑其他因素,如出勤率、参与度等等。
sort排序方法
Sort排序方法是一种非常常见的算法,在编程中经常用到。
在计算机科学中,排序算法是一种将元素的顺序重新排列的算法。
排序通
常以增序排列为目标,即从小到大排序。
Sort排序方法可以大大提高
程序的执行效率,在数据处理和管理中也具有重要作用。
Sort排序算法有多种方法,例如冒泡排序、快速排序、选择排序、插入排序、归并排序等等。
每种算法都有其独特的优缺点。
其中最简单的排序算法是冒泡排序。
它通过比较相邻的两个元素
并不断交换,将最大的元素逐步“浮”到数组末尾,从而实现排序。
虽然冒泡排序的算法简单易懂,但是当数据量较大时,它的效率较慢,因此不适合处理大数据量的情况。
快速排序是一种高效的排序算法,它的实现方式是通过选取一个
基准值,将数组分为小于和大于基准值的两个子数组,并对这两个子
数组进行递归排序。
快速排序的优势在于它的效率非常高,是目前最
常用的排序算法之一。
除了以上两种算法,还有很多其他的排序方法。
无论使用哪种算法,排序的过程都相对比较简单,但是排序的效率和正确性需要耗费
精力和时间来保证。
在实际编程中,我们需要根据实际情况来选择合
适的排序算法,以保证程序的效率和正确性。
总之,Sort排序方法是编程中不可或缺的一部分,无论是在数据处理还是算法实现中都至关重要。
我们需要认真学习各种排序算法,
并灵活选择合适的算法,以提高程序的效率和可读性。
简单排序算法排序算法是计算机科学中最基本、最常用的算法之一。
通过对原始数据集合进行排序,可以更方便地进行搜索、统计、查找等操作。
常用的排序算法有冒泡排序、选择排序、插入排序等。
本文将介绍这些简单排序算法的具体实现及其优缺点。
一、冒泡排序(Bubble Sort)冒泡排序是一种基础的交换排序算法。
它通过不断地交换相邻的元素,从而将数据集合逐渐排序。
具体实现步骤如下:1.比较相邻的元素。
如果第一个比第二个大,就交换它们两个;2.对每一对相邻元素做同样的工作,从第一对到最后一对,这样一轮排序后,就可以确保最后一个元素是最大的元素;3.针对所有元素重复以上的步骤,除了最后一个;4.重复步骤1~3,直到排序完成。
冒泡排序的优点是实现简单、容易理解。
缺点是排序效率较低,尤其是对于较大的数据集合,时间复杂度为O(n²)。
二、选择排序(Selection Sort)选择排序是一种基础的选择排序算法。
它通过在数据集合中选择最小的元素,并将其放置到最前面的位置,然后再从剩余元素中选出最小的元素,放置到已排序部分的末尾。
具体实现步骤如下:1.在未排序序列中找到最小元素,存放到排序序列的起始位置;2.再从剩余未排序元素中继续寻找最小元素,放到排序序列末尾;3.重复步骤1~2,直到排序完成。
选择排序的优点是实现简单、固定时间复杂度O(n²)。
缺点是排序效率仍然较低,尤其是对于大数据集合,因为每次只能交换一个元素,所以相对于冒泡排序,它的移动次数固定。
三、插入排序(Insertion Sort)插入排序是一种基础的插入排序算法。
它将未排序的元素一个一个插入到已排序部分的正确位置。
具体实现步骤如下:1.从第一个元素开始,该元素可以认为已经被排序;2.取出下一个元素,在已经排序的元素序列中从后往前扫描;3.如果该元素(已排序)大于新元素,将该元素移到下一位置;4.重复步骤3,直到找到已排序的元素小于或等于新元素的位置;5.将新元素插入到该位置后;6.重复步骤2~5,直到排序完成。
《数据结构与算法》实验报告一、需求分析问题描述:在教科书中,各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时间。
试通过随机数据比较各算法的关键字比较次数和关键字移动次数,以取得直观感受。
基本要求:(l)对以下6种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序。
(2)待排序表的表长不小于100000;其中的数据要用伪随机数程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换计为3次移动)。
(3)最后要对结果作简单分析,包括对各组数据得出结果波动大小的解释。
数据测试:二.概要设计1.程序所需的抽象数据类型的定义:typedef int BOOL; //说明BOOL是int的别名typedef struct StudentData { int num; //存放关键字}Data; typedef struct LinkList { int Length; //数组长度Data Record[MAXSIZE]; //用数组存放所有的随机数} LinkList int RandArray[MAXSIZE]; //定义长度为MAXSIZE的随机数组void RandomNum() //随机生成函数void InitLinkList(LinkList* L) //初始化链表BOOL LT(int i, int j,int* CmpNum) //比较i和j 的大小void Display(LinkList* L) //显示输出函数void ShellSort(LinkList* L, int dlta[], int t,int* CmpNum, int* ChgNum) //希尔排序void QuickSort (LinkList* L, int* CmpNum, int* ChgNum) //快速排序void HeapSort (LinkList* L, int* CmpNum, int* ChgNum) //堆排序void BubbleSort(LinkList* L, int* CmpNum, int* ChgNum) //冒泡排序void SelSort(LinkList* L, int* CmpNum, int* ChgNum) //选择排序void Compare(LinkList* L,int* CmpNum, int* ChgNum) //比较所有排序2 .各程序模块之间的层次(调用)关系:二、详细设计typedef int BOOL; //定义标识符关键字BOOL别名为int typedef struct StudentData //记录数据类型{int num; //定义关键字类型}Data; //排序的记录数据类型定义typedef struct LinkList //记录线性表{int Length; //定义表长Data Record[MAXSIZE]; //表长记录最大值}LinkList; //排序的记录线性表类型定义int RandArray[MAXSIZE]; //定义随机数组类型及最大值/******************随机生成函数********************/void RandomNum(){int i; srand((int)time(NULL)); //用伪随机数程序产生伪随机数for(i=0; i小于MAXSIZE; i++) RandArray[i]<=(int)rand(); 返回;}/*****************初始化链表**********************/void InitLinkList(LinkList* L) //初始化链表{int i;memset(L,0,sizeof(LinkList));RandomNum();for(i=0; i小于<MAXSIZE; i++)L->Record[i].num<=RandArray[i]; L->Length<=i;}BOOL LT(int i, int j,int* CmpNum){(*CmpNum)++; 若i<j) 则返回TRUE; 否则返回FALSE;}void Display(LinkList* L){FILE* f; //定义一个文件指针f int i;若打开文件的指令不为空则//通过文件指针f打开文件为条件判断{ //是否应该打开文件输出“can't open file”;exit(0); }for (i=0; i小于L->Length; i++)fprintf(f,"%d\n",L->Record[i].num);通过文件指针f关闭文件;三、调试分析1.调试过程中遇到的问题及经验体会:在本次程序的编写和调试过程中,我曾多次修改代码,并根据调试显示的界面一次次调整代码。
优先级排序提高工作效率的秘诀工作效率是每个人都追求的目标,然而,我们常常会遭遇各种琐事和干扰,导致任务无法顺利完成。
在如今快节奏的社会中,学会合理地设置优先级,将工作按照重要性和紧急程度进行排序,可以有效提高工作效率。
本文将分享一些优先级排序的秘诀,帮助读者提高工作效率。
一、重要紧急矩阵法重要紧急矩阵法是一种经典的任务管理方法,可以帮助我们理清任务的优先级。
将任务分为四个象限,分别是重要紧急、重要不紧急、不重要紧急和不重要不紧急,然后根据任务的特性进行优先级排序。
以重要紧急的任务为首要目标,然后依次处理其他任务。
二、ABC分级法ABC分级法是另一种常用的任务管理方法,可以帮助我们更好地设置优先级。
将所有任务标记为A、B、C三个等级,A级为最重要的任务,B级为次重要的任务,C级为次次重要的任务。
然后按照等级顺序逐一完成任务,确保最重要的任务得到优先解决。
三、时间块法时间块法是一种利用时间进行任务划分和管理的方法。
将每天的时间划分为若干个时间块,每个时间块专门用来完成一个任务或一类任务。
通过明确时间块的任务内容和持续时间,可以更好地掌控时间,并提高工作效率。
四、任务清单法任务清单法是一种简单但有效的任务管理方式。
将所有任务列成一个清单,并排序。
每天开始前,根据清单中的任务选择当天需要完成的任务。
将未完成的任务移到第二天的清单中,确保任务不被遗漏或拖延。
五、积极时间管理除了以上的任务管理方法,良好的时间管理习惯也是提高工作效率的关键。
合理安排工作与休闲时间,确保每天都有足够的休息和放松,以提高工作积极性和效率。
同时,避免拖延症的发生,及时处理任务,避免任务堆积。
六、集中注意力集中注意力是提高工作效率的重要因素。
在工作时避免过多的分散注意力的事物,减少干扰,将精力集中在当前任务上。
可以通过关掉手机或将其调至静音模式,关闭社交媒体或其他不相关的网站,创造出一个专注的工作环境。
七、灵活运用工具在现代科技发达的时代,各种工具和软件可以帮助我们更好地管理任务和时间。
排序效率比较
Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】
《排序效率比较》
专 业:
班 级:
姓 名:
指导教师:
二OO九年 八月 二十七 日
目 录
课程设计的内容如下:
1.课程设计目的
用C++编一程序对排序方法进行比较,用选定的排序方法进行排序,输
出每种方法数据比较或交换的次数,最后输出所花费的时间。
2.课程设计题目描述和要求
[问题描述]对排序法进行比较,比较其运行效率。
[基本要求]至少对三种排序方法进行比较,比较方法是生成一组数据
(≥400)。
(1)用三种方法对四百个数字进行排序;
(2)用time函数分别测试三种排序方法就同一组数据排序所消耗的时
间;
(3)分别测试三种排序方法就同一组数据排序所交换的次数;
3.课程设计报告内容
结构图
(1)功能结构图
(2)数据流程图
主要函数功能描述
(1)Time()
{
主函数main
测试选择 排序 测试冒泡 排序 测试插入
排序
调用Time函数 调用选择排序函数 调用Time函数 调用冒泡排序函数 调用Time函数 调用
插入
排序
函数
开始
排序效率 比较
测试选择排序 所需时间 测试冒泡排序 所需时间 测试插入排序
所需时间
long beginTime =clock();程设计总结
通过一年对数据结构程序设计的学习,我已经能够进行简单的程序设
计,这次课程设计对自己所学知识起到了检测和提高的作用。虽然已经完
成,但是还有很多不足之处,程序的设计中遇到不少问题,例如如何进行排
序算法的边写,Time函数的应用等等,通过和同学的讨论与交流,解决了
不少问题。程序的调试过程中也有不少问题,例如标点、菜单的界面设计
等。
课程设计完成后,感觉上最大的收获就是在设计之前要有一个清晰的思
路和完整的设计提纲,对各功能函数的作用做详细考虑。细心在这次课程设
计中起到很关键的作用,一个标点、一个字母、一个符号都可能导致程序的
不能运行,因此要有耐心认真完成。当然知识是不可缺少的,只有对这学期
所学得知识能够真正掌握并能加以运用,才能顺利完成这次的课程设计。如
果把磁盘文件学的精通一点,就可以用磁盘文件读取数据。
参考书目:
谭浩强,《C++程序设计》,北京,清华大学出版社,2006年.
源代码:
#include
#include<>
using namespace std;
int t1,t2,t3;
void T1 (int *a)
{
long beginTime =clock();//获得开始时间,单位为毫秒
int i,j,k,t,n1=0;
for(i=0;i<399;i++){
k=i;
for(j=i+1;j<400;j++)
if(a[j]{
k=j;
t=a[i];
a[i]=a[k];
a[k]=t;
n1++;
} //选择排序
}
for(i=0;i<400;i++)
cout<long endTime=clock();//获得结束时间
cout<<"beginTime:"<
t1=endTime-beginTime;
cout<<"t1="<
void T2 (int *a)
{
long beginTime =clock(); //获得开始时间,单位为
毫秒
int i,j,k,t,n2=0;
for(i=0;i<399;i++){
k=i;
for(j=i+1;j<400;j++)
if(a[j]k=j;
t=a[i];
a[i]=a[k];
a[k]=t;
{
n2++;
}
} //起泡排序
for(i=0;i<400;i++)
cout< long endTime=clock(); //获得结束时间
cout<<"beginTime:"<
cout<<"t2="<
void T3(int *a){
long beginTime =clock(); //获得开始时间,单位为毫
秒
int i,j,n=400,n3=0,b;
for(i=2;i<=400;i++){
b=a[i];
for(j=i-1;ba[j+1]=a[j];
a[j+1]=b;
{
n3++;
}
//插入排序
}
for(i=1;i<=n;i++)cout<cout<
cout<<"beginTime:"<
cout<<"t3="<
void main()
{
int a[401];
for(int i=0;i<401;i++)
a[i]=(401-i);
T1(a); //分别调用函数
T2(a);
T3(a);
}