快速排序(实验报告附C++源码)

快速排序(实验报告附C++源码)

ID:39494445

大小:63.00 KB

页数:4页

时间:2019-07-04

快速排序(实验报告附C++源码)_第1页
快速排序(实验报告附C++源码)_第2页
快速排序(实验报告附C++源码)_第3页
快速排序(实验报告附C++源码)_第4页
资源描述:

《快速排序(实验报告附C++源码)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、快速排序一、问题描述在操作系统中,我们总是希望以最短的时间处理完所有的任务。但事情总是要一件件地做,任务也要操作系统一件件地处理。当操作系统处理一件任务时,其他待处理的任务就需要等待。虽然所有任务的处理时间不能降低,但我们可以安排它们的处理顺序,将耗时少的任务先处理,耗时多的任务后处理,这样就可以使所有任务等待的时间和最小。只需要将n件任务按用时去从小到大排序,就可以得到任务依次的处理顺序。当有n件任务同时来临时,每件任务需要用时ni,求让所有任务等待的时间和最小的任务处理顺序。二、需求分析1.输入事件件数n,分别随机产生做完n件事所需要的时间;2.对n件事所需的时间使用快速排序法

2、,进行排序输出。排序时,要求轴值随机产生。3.输入输出格式:输入:第一行是一个整数n,代表任务的件数。接下来一行,有n个正整数,代表每件任务所用的时间。输出:输出有n行,每行一个正整数,从第一行到最后一行依次代表着操作系统要处理的任务所用的时间。按此顺序进行,则使得所有任务等待时间最小。4.测试数据:输入9534261573输出123345567三、概要设计抽象数据类型因为此题不需要存储复杂的信息,故只需一个整型数组就可以了。算法的基本思想对一个给定的进行快速排序,首先需要选择一个轴值,假设输入的数组中有k个小于轴值的数,于是这些数被放在数组最左边的k个位置上,而大于周知的结点被放

3、在数组右边的n-k个位置上。k也是轴值的下标。这样k把数组分成了两个子数组。分别对两个子数组,进行类似的操作,便能得到正确的排序结果。程序的流程输入事件件数n-->随机产生做完没个事件所需时间-->对n个时间进行排序-->输出结果快速排序方法(因图难画,举一个实例):初始状态72657888542lr第一趟循环72657888542lr第一次交换67257888542lr第二趟循环67257888542rl第二次交换72657888542rl反转交换67257888542rl这就是依靠轴值,将数组分成两部分的实例(特殊情况下,可能为一部分,其中42是轴值)。对分成的两部分数组,分别

4、尽心类似的操作,便可得符合要求的结果。快速排序的函数模块;voidqsort(int*array,intl,intr){if(r<=l)return;intpivotIndex=l+rand()%(r-l+1);//随机选定轴值swap1(array,pivotIndex,r);//将选定的轴值放到每段数组的最后intk=partition(array,l-1,r,array[r]);//依靠轴值,将数组分//成两部分swap1(array,k,r);//将轴值放到正确的位置上qsort(array,l,k-1);//递归调用,对数组左右两部分进行排序qsort(array,k+1

5、,r);}/*将大于轴值的放右边,小于轴值的放左边算法实现*/intpartition(int*array,intl,intr,constintpivot){do{while(array[++l]pivot));swap1(array,l,r);}while(l

6、://提示随机产生的n个随机数结果://提示正确的排序结果一、测试结果二、实验心得(可选)这个实验,不难。但是关键在于理解快速排序的那个过程,如何根据轴值将数组分成两部分,然后将轴值放到合适的位置,继续对分成两部分的数组,执行类似的操作。三、附录(实验源码)#include#includeusingnamespacestd;//产生n个随机数,存储到数组int*crtArray(int&size){intn;cout<<"n=";cin>>n;//设置随机种子srand(time(NULL));int*intArray=newint[n];size

7、=n;cout<<"原始序列:"<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。