ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

算法分析与设计作业3

2021-06-22 13:01:08  阅读:123  来源: 互联网

标签:return int 复杂度 作业 middle 算法 查找 数组 设计


1.问题
写出两种检索算法:在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在
T的下标j;如果x不在T中,输出j=0.按实验模板编写,“分析”部分仅给出复杂度
结果即可。
2.解析
顺序查找:这是最简单也是最先想到的算法,但是它的缺陷也很明显,如果要找到的数在数组的末尾,那么要找到这个数就必须遍历一遍数组,当这个数组很大时,找到这个数所要花费的时间是我们无法接受的。
二分查找:相较于顺序查找,二分查找是我们所学过的较为快速的一种查找方式,它的操作步骤也很简单,首先将这个数组分为两部分,取一个中间值与要查找的值相比较,如果比要查找的值值大那就在左半边查找,反之则在右半边查找。
3.设计
1.顺序查找:

int SequentialSearch(int T[], int n, int x)//传递过来数组的第一个值的地址
{
int i;
for (i = 0; i < n; i++)//从0开始遍历一遍数组
{
if (T[i] == x)return i;//找到就输出下标
}
return 0;//没找到就输出0
}
2.二分查找

int BinarySearch(int T[], int n, int x)
{
int low = 0;
int high = n-1;
int middle;
while (low <= high)//设置跳出条件,当查找的最小边界大于最大边界时就跳出
{
middle = (low + high) / 2; //找出中间值
if (x < T[middle])high = middle - 1; //向中间值的左半边查找
else if (x > T[middle])low = middle + 1; //向中间值的右半边查找
else return middle; //找到就返回下表
}
return 0;//没找到就输出0
}
4.分析
1.顺序查找:因为是从头到尾遍历一遍,所以查找的时间复杂度跟数组的个数有关,所以时间复杂度为O(n).
2.二分查找:因为是不断地折中查找,所以时间复杂度为O(logn).

5.源码
https://github.com/jinwanzaodianshui/zuoye3

标签:return,int,复杂度,作业,middle,算法,查找,数组,设计
来源: https://blog.csdn.net/weixin_50845577/article/details/118104616

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有