查找与排序实验报告
更新时间:2023-09-15 22:27:01 阅读量: 高中教育 文档下载
实 验 报 告
实验原理:
快速排序的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
假设要排序的数组是A[1]……A[N],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一躺快速排序。一躺快速排序的算法是:
1)设置两个变量I、J,排序开始的时候I:=1,J:=N
2)以第一个数组元素作为关键数据,赋值给X,即X:=A[1];
3)从J开始向前搜索,即(J:=J-1),找到第一个小于X的值,两者交换; 4)从I开始向后搜索,即(I:=I+1),找到第一个大于X的值,两者交换; 5)重复第3、4步,直到I=J。 二分法查找(折半查找)的基本思想:
(1)确定该区间的中点位置:mid=(low+high)/2
min代表区间中间的结点的位置,low代表区间最左结点位置,high代表区间最右结点位置 (2)将待查a值与结点mid的关键字(下面用R[mid].key)比较,若相等,则查找成功,否则确定新的查找区间:
A)如果R[mid].key>a,则由表的有序性可知,R[mid].key右侧的值都大于a,所以等于a的关键字如果存在,必然在R[mid].key左边的表中,这时high=mid-1;
B)如果R[mid].key
C)如果R[mid].key=a,则查找成功。
(3)下一次查找针对新的查找区间,重复步骤(1)和(2)
(4)在查找过程中,low逐步增加,high逐步减少,如果high 实验目的: 本实验通过实现快速排序和折半查找算法,使学生理解如何实现快速查找和排序的基本算法思想。通过练习,加强对算法的理解,提高编程能力。 实验内容: (1)实现数据序列的输入; (2)实现快速排序算法,并对输入的序列排序后输出; 第1页 (3)实现折半查找算法,并在步骤(2)排序后的序列上,进行任意地 查找,并输出查询结果。 实验器材(设备、元器件): PC机一台,装有C语言集成开发环境。 数据结构与程序: #include using namespace std; void quick_sort(int *, int *); int binary_search(int *, int, int, int); int main() { char ch; int arr[100] = {1}; int search, pos, count = 0; while(true) { } //sort(arr, arr+count); quick_sort(arr, arr+count); cout<<\ cin>>search; pos = binary_search(arr, search, 0, count); if(pos != -1) cout<<\number \you are searching is in the position of 第2页 cin>>ch; if(ch == '#') break; arr[count++] = ch-48; No.\ else cout<<\number \you are searching is not in this arrage\ return 0; } void quick_sort(int *start, int *end) //快排 { int *_Start, *_End; int key = *start; _Start = start, _End = end-1; if(_Start > _End); else { } } int binary_search(int *arr, int search, int left, int right) //二分查找 { if(left > right) return -1; 第3页 while(_Start < _End) { } *_Start = key; quick_sort(start, _Start); quick_sort(_Start+1, end); while(key < =*_End && _Start < _End) _End--; *_Start = *_End; while(key > *_Start && _Start < _End) _Start++; *_End = *_Start; else if(arr[(left+right)/2] == search) } return (left+right)/2+1; return binary_search(arr, search, left, (left+right)/2-1); return binary_search(arr, search, (left+right)/2+1, right); else if(arr[(left+right)/2] > search) else if(arr[(left+right)/2] < search) 程序运行结果: 初始界面:输入待排序数组,并以#结束 自动排序后提示输入需要查找的数据: 第4页 查找后结果:(查找数据存在) (查找数据不存在) 第5页 实验结论: 快速排序时间复杂度为O(nlogn),二分查找时间复杂度为 O(logn),均为高效算法。 总结及心得体会: 二分查找算法使用前提是查找序列已排序完成。 第6页
正在阅读:
查找与排序实验报告09-15
吉林省高二下学期地理开学试卷C卷05-13
2008年幼儿园工作计划07-17
新起点二年级上册电子教案12-01
OPERA系统培训带截图05-18
山河智能:驱动主业大幅增长 买入评级04-17
- 上海大众、一汽大众、东风日产车型与VIN代号对照表
- 第2章服装原型及原型制作
- 江苏省工商行政管理系统经济户口管理办法及四项制度
- 纪检监察业务知识试题2
- 传感器综合题答案
- 北京第二外国语学院翻硕招生人数及学费
- 初三新编英语教材下册
- 公司庆中秋、迎国庆联欢会客串词
- 向区委常委会汇报安全生产工作材料
- 2006年GCT英语模拟试题(三)及答案解析
- 经济法概念的早期使用
- 我爱做家务课堂教学设计
- 学校安全工作月报表、消防安全排查表、消防隐患排查台账
- 成本会计毕业论文
- 班级文化建设论文
- 2018年天津市高考文科试题与答案汇总(Word版) - 图文
- 铁路论文
- 2017年嵌入式系统设计师考试时间及地点
- 1.111--灾害与突发公共卫生事件应急预案
- 起爆点主图 注意买入 拉升 逃顶源码指标通达信指标公式源码
- 排序
- 查找
- 实验
- 报告
- 废止的劳动和劳动保障规范性文件目录
- 预测卦例精选
- 专升本+自考管理学原理试题及答案(试卷+答案)
- 外研版七年级英语下Module12模块检测试卷含答案 - 图文
- 板式家具的结构设计与制造
- 使用说明书DUM-4850C4
- 数据库课程设计总结与体会
- 乙醛 醛类(学习手册)
- 谁是最可爱的人(改稿)
- QJZ-200-315-400-1140(660)矿用隔爆兼本质安全型真空电磁起动器(电光)
- 我国城市发展及中西对比
- 中小学体育卫生工作专项督导评估实施细则范文 - 图文
- 青岛版二年级数学上册《乘法的初步认识》习题
- 篮球 - 兴趣小组活动记录表
- 2015年下半年云南省混凝土工:施工方案的概念试题
- 2018版财务公司项目商业计划书(目录) - 图文
- 油菜杂种优势浅析
- 六年级分数乘除法综合练习题及答案
- 中国矿用高强度圆环链行业市场分析与发展趋势研究报告-灵核网 - 图文
- 浙江省杭州外国语学校初七年级数学暑假作业提高题四浙教版含答案