没有合适的资源?快使用搜索试试~ 我知道了~
查找和排序的基本操作.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 132 浏览量
2023-08-19
22:35:00
上传
评论
收藏 1.04MB PDF 举报
温馨提示
查找和排序的基本操作 本资源摘要信息的主要内容是关于查找和排序的基本操作,包括二分查找算法、起泡排序算法、简单选择排序算法和直接插入排序算法等。 一、查找算法 查找算法是指在给定的数据集合中找到指定元素的过程。常见的查找算法包括二分查找算法、顺序查找算法等。 1. 二分查找算法 二分查找算法是一种高效的查找算法,它的思路是将要查找的元素与中间元素进行比较,如果要查找的元素小于中间元素,则在左半部分继续查找,否则在右半部分继续查找。重复上述操作直至找到要查找的元素或查找失败。 二分查找算法的时间复杂度为O(logn),它是查找算法中最快的算法之一。 二、排序算法 排序算法是指将一个无序的数据集合转换为一个有序的数据集合的过程。常见的排序算法包括冒泡排序算法、选择排序算法、插入排序算法等。 1. 起泡排序算法 起泡排序算法是一种简单的排序算法,它的思路是将相邻的元素进行比较,如果逆序,则交换两个元素。重复上述操作直至整个数据集合有序。 2. 简单选择排序算法 简单选择排序算法是一种选择排序算法,它的思路是首先选择一个基准元素,然后从左至右扫描,找出最小的元素,并将其与基准元素交换。重复上述操作直至整个数据集合有序。 3. 直接插入排序算法 直接插入排序算法是一种插入排序算法,它的思路是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。重复上述操作直至整个数据集合有序。 本资源摘要信息中的查找和排序算法都是常用的算法,它们在实际应用中有着广泛的应用前景。
资源推荐
资源详情
资源评论




























软件学院
2012
学年秋季学期
上机实验
报告册
课程名称: ___________________________
实验名称: ___________________________
指导教师: ___________________________
小、组成员. **********
********** **********
********** **********
实践教学
**********
*********

查找和排序
一.
实验目的
1•熟悉并掌握二分查找算法;
2. 熟悉并掌握起泡排序算法;
3. 熟悉并掌握简单选择算法;
4. 熟悉并掌握直接插入排序算法;
5. 熟悉并掌握二分插入排序算法;
6. 熟悉并掌握快速排序算法;
二.
实验内容和原理
1•二分查找算法
二分查找算法的思路:
初始状态:假设表长为 n, low、high 和 mid 分别指向待查元素所在区间 的
下界、上界和中点
,
key 为给定值,初始时,令 low=0,high=n-1,mid=(low+high)/2 让
key 与 mid 指向的记录比较
若 key==r[mid].key,查找成功
,
算法结束;若 key<r[mid].key,贝 U high=mid-1 ;
若 key>r[mid].key,贝 U low=mid+1 ;重复上述操作,直至 low>high 时,查找失败。
2•起泡排序算法
起泡排序的思路:
首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序
(即 L.r[1].key>L.r[2].key ),则将两个记录交换之,然后比较【第二个记录和第 三
个记录】的关键字。以此类推,直至第 n-1 个记录和第 n 个记录的关键字进行 过比
较为止。上述过程称做第一趟起泡排序,其结果使得关键字最大的记录被安 置到最
后一个记录的位置上,然后进行第二趟起泡排序,对前 n-1 个记录进行同
样操作,其结果是使关键字次大的记录被安置到第 n-1 个记录的位置上。一般地,
第 i 躺起泡排序是从 L.r[1]到 L.r[n-i+1]以此比较相邻两个记录的关键字,并在“逆
序”时交换相邻记录,其结果是这 n-i+1 个记录中关键字最大的记录被交换到第 n-
i+1 的位置上。整个排序过程需进行 k(1<=k<n)躺起泡排序,显然,判别起泡排 序结
束的条件应该是“在一趟排序过程中没有进行过交换记录操作” 。
3•简单选择算法
算法思路:
首先以一个元素为基准,从一个方向开始扫描,比如从左至右扫描,以
a[0]为基准,接下来从 a[0]...a[9]
中找出最小的元素,将其与 a[0]交换,然后将基准位置右

移一位,重复上面的动作,比如,以 a[1]为基准,找出 a[1]至 a[9]中最小的,将 其
与 a[1]交换,一直进行到基准位置移到数组最后一个元素时排序结束(此时基 准左
边所有元素均递增有序,而基准为最后一个元素,故完成排序) 。
4•直接插入排序算法
直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入 到
已排好序的有序表中,从而得到一个新的,记录数增 1 的有序表。
一般情况下,第 i 趟直接插入排序的操作为:在含有 i-1 个记录的有序子序 列
r[1...i-1]中插入一个记录 r[i]后,变成含有 i 个记录的有序子序列 r[1....i].在自 i-1 起往
前搜索的过程中,可以同时后移记录。
整个排序过程为进行 n-1 躺插入,即:先将序列中的第一个记录看成是一个有序 的
子序列,然后从第二个记录起逐个进行插入,直至整个序列变成按关键字非递 减有
序序列为止
5.二分插入排序算法
在直接插入排序的基础上,当待排序序列中的记录数量 n 很大时,为了减少
“比较”和“移动”这两种操作次数,有一种方法叫二分插入法。
6•快速排序算法
快速排序算法是对起泡排序的一种改进。
算法思路:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录 的
关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排 序,以
达到整个序列有序。在这种方法中,n 个元素被分成三段(组):左段:left, 右段
right 和中段 middle.中段仅包含一个元素。左段中各元素都小于等于中段元 素。因此
left 和 right 中的元素可以独立排序,并且不必对 left 和 right 的排序结
果进行合并。使用快速排序方法对 a[0 到 n-1]排序
,
从 a[0 到 n-1 ]中选择一个元素
作为 middle,该元素为支点把余下的元素分割为两段 left 和 right,使得 left 中的元
素都小于等于支点,而 right 中的元素都大于等于支点,递归地使用快速排序方 法对
left 进行排序,递归地使用快速排序方法对 right 进行排序所得结果为
left+middle+right。
三.
程序代码
1.二分查找算法
#in clude <iostream>
using n amespace std;
int MyBin arySearch(i nt search, int * nu mber, i nt start, int end )
{
int low = start;
int high = end;
〃cout<<high<<e ndl;
int j = -1, mid;
剩余16页未读,继续阅读
资源评论


hhappy0123456789
- 粉丝: 82
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- FDTD仿真技术在光子晶体微腔滤波器与传感模型构建中的应用及Q值优化 传感模型 文档
- 光学领域中涡旋相位对电场模式纯度影响的研究及其应用前景
- 基于Puck准则的复合材料ABAQUS UMAT子程序研究与应用:损伤分析及失效结果云图解析
- 碳交易机制下综合能源系统优化运行:基于价格型与替代型需求响应模型的研究
- 新能源微电网中储能电池与互补能量管理的MATLAB仿真技术 参考
- 基于IPSO优化LSTM的二分类与多分类模型:非线性权重递减的PSO改进算法与Matlab实现
- 基于LabWindowsCVI与RTX64的共享内存通讯及TDMS数据处理在工业自动化中的应用
- 基于混合整数规划的电池容量优化研究与应用
- 自动驾驶技术领域的轨迹跟踪控制与多模型优化方案详解
- 直齿轮点蚀与剥落故障时变啮合刚度求解及MATLAB程序实现的研究 势能法 全面版
- Unity ECS 1.3.14 API文档
- 汽车工程领域MATLAB与Simulink联合仿真的车辆运动学模型验证
- MATLAB与Simulink联合仿真下的车辆二自由度动力学模型验证
- 车辆工程中MATLAB与Simulink联合仿真验证魔术轮胎模型及其应用
- 电力电子领域双向CLLLC谐振变换器基波分析法下电压增益与Q值、电感比k关系的MATLAB仿真
- 基于ADRC的主动悬架控制技术:设计观测器与非线性误差反馈控制器的实践研究
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
