线性时间选择
一. 实验目的 :
1. 理解算法设计的基本步骤和各步的主要内容、基本要求;
2. 加深对递归设计方法基本思想的理解,并利用其解决现实生活中的问题;
3. 通过本次试验初步掌握将算法转化为计算机上机程序的方法。
二. 实验内容 :
1. 编写实现算法:给定 n 个元素,在这 n 个元素中找到第 key 小的元素;
2. 将输入的数据存储到指定的文本文件中,而输出数据存放到另一个文本文件中,包
括结果和具体的运行时间;
3. 对实验结果进行分析。
三. 实验操作 :
1.线性时间选择的思想 :
首先将这 n 个元素分成 5 组,利用排序算法找到其中的中位数, 再将这些中位数
排序找到整个数组的中位数 median ,以这个中位数 median 为界限, 将整个数组划分
为三部分, 小于 median ,等于 median 和大于 median 三部分, 判断 key 在哪部分中,
对那部分进行递归调用,直到找到等于 key 的元素为止。
综上判断, 其时间复杂度为: T(n)=cn (n 为实验数据的个数) ,故为线性时间。
2.快速排序 :
本次排序使用的是快速排序,快速排序是一种相对较快的排序方式,能够减少一
定的时间开销。
代码实现 :
void quickSort(int List[],int low,int high){
if(low=high) return;
int first=low;
int last=high;
int key=List[first];
while(firstlast){
while(firstlastList[last]=key) --last;
List[first]=List[last];
while(firstlastList[first]=key) ++first;
List[last]=List[first];
}
List[first]=key;
quickSort(List,low,first-1);
quickSort(List,last+1,high);
}
3. 实验数据的输入 :
为了保证实验数据的随机性,本实验采用随机生成的方式提供数据,并将输入
输出数据存储到指定的文本文件中,需要采用 C++文件流操作,对于数据的输入,
由于 cin 对数据的读取会忽略空格和换行操作,故使用 cin 流来控制数据的输入。
输入代码实现 :
int write(){
ofstream outFile;
outFile.open(E:// 程序设计 /practice 1/ 算法设计与分析 / 文本文件
夹/ 线性选择数据 .txt,ios::trunc);
if(!outFile.is_open()) coutoutFile cant open!endl;
cout 输入随机数的范围 :endl;
int length,len,start,end,j=0;
cinstartend;
cout 输入要查找的数据个数: endl;
cinlength;
len=length;
int* Array=new int[length];
for(int i=0;ilength;i++){
您可能关注的文档
最近下载
- 2025年陕西三校生单招试题真题及答案.doc VIP
- DB34_T3465-2019《连续梁桥整体同步顶升技术规程》.docx VIP
- 現代詩歌朗誦教學與訓練.ppt VIP
- 現代詩創作訓練-台灣首府大學.ppt VIP
- 2025年语文重庆春招试题及答案.doc VIP
- 部编版初中语文课本里现代文中重要的中外作家及作品等文学常识汇总(共六册).pdf VIP
- 最新大学考试复习资料-成本会计试题及答案.doc VIP
- 英国石油公司(BP)标准 GIS 62-021 - EEMUA 182 Integral Block and Bleed Valve Manifolds - 0900a866800dbfa8.pdf
- 2025年度民主生活会带头强化政治忠诚、提高政治能力(五个带头)问题原因查摆剖析整改措施8篇.docx VIP
- 2026部编人教版小学五年级语文下册课内阅读理解专项练习(附答案).pdf
原创力文档

文档评论(0)