数据结构---顺序查找和二分查找

数据结构—顺序查找和二分查找

原理:参考趣学数据结构

代码:

#include<stdio.h>
#include<stdlib.h>
int n;//查找元素数组的长度
void seqCheckValue1(int* a) {//顺序查找1,有越界判断int v = a[0];for (int i = 1; i < n; i++) {if(a[i]==v){printf("查找成功!\n\n");return;}}printf("查找失败!\n");
}
void seqCheckValue2(int* a) {//顺序查找2,没有越界判断,可以缩减一半的判断语句int v = a[0];int i;for ( i = n -1; a[i]!=v ; i--) {}if (i == 0) {printf("查找失败!\n");}else {printf("查找成功!\n\n");}
}
void biaCheckValue1(int* a,int v,int l, int r) {//顺序查找1,非递归查找int i = l, j = r;while (i <= j) {int mid = (i + j) / 2;if (a[mid] == v) {printf("查找成功!\n\n");return;}else if (a[mid] < v) {j = mid - 1;}else {i = mid + 1;}}printf("查找失败!\n");
}
void biaCheckValue2(int* a, int v,int l, int r) {//顺序查找2,递归查找int i = l, j = r;while (i <= j) {int mid = (i + j) / 2;if (a[mid] == v) {printf("查找成功!\n\n");return;}else if (a[mid] < v) {biaCheckValue2(a, v,l, mid - 1);}else {biaCheckValue2(a, v,mid+1, l);}}printf("查找失败!\n");
}
int main() {int a[5] = { 6,4,5,6,8 };int b[5] = { 3,4,5,6,8 };n = sizeof(a) / sizeof(a[0]);printf("查找方式1!\n");seqCheckValue1(a);printf("查找方式2!\n");seqCheckValue2(a);printf("查找方式3!\n");biaCheckValue1(b,5,0,n-1);printf("查找方式4!\n");biaCheckValue2(b, 5, 0, n - 1);printf("\n");system("pause");return 0;
}

测试截图:

请添加图片描述

顺序查找
时间复杂度O(n),空间复杂度O(1)

二分查找
非递归 时间复杂度O(logn),空间复杂度O(1)
递归 时间复杂度O(1),空间复杂度O(logn)栈空间

应用场景:
顺序查找用在无序数中,而二分搜索用在有序数中。

如果存在什么问题,欢迎批评指正!谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git上托管的代码如何部署在阿里云上_居然仅用浏览器搞定Spring Boot应用的开发与部署...

最近有幸试用了一下阿里云的一个新产品&#xff1a;云开发平台&#xff0c;体验一把全新的开发模式&#xff01;虽然中间也碰到了一些问题&#xff0c;但整体的体验透露着未来感&#xff0c;因为整个过程都不需要使用我们最常用的IDEA&#xff0c;仅依靠浏览器就把一个Spring B…

Kubernetes 与 Helm:使用同一个 Chart 部署多个应用

k8s 集群搭建好了&#xff0c;准备将 docker swarm 上的应用都迁移到 k8s 上&#xff0c;但需要一个一个应用写 yaml 配置文件&#xff0c;不仅要编写 deployment.yaml 还要编写 service.yaml &#xff0c;而很多应用的配置是差不多的&#xff0c;这个繁琐工作让人有些望而却步…

sqrt()函数的注意事项

sqrt()函数中形参是double型&#xff0c;因此返回的也是double型。 int a; int b; a sqrt(b);这里的a是int型&#xff0c;我们在调用sqrt()函数时&#xff0c;要进行强制转换。 代码如下&#xff1a; int a,b; a (int)sqrt(b);

数据结构---BF字符串模式匹配

数据结构—BF字符串模式匹配 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> int BF(char * S, char* T,int pos,int n,int m) {//暴力算法求解子串T在S中第一次出现的位置int i pos, j 0;while (i < n &&a…

windows系统如何cmake_Windows操作系统如何快速增加分区?建议收藏

现在新买的电脑大都是出厂单分区的设置&#xff0c;也就是只有系盘C&#xff0c;没有D、E之类。于是也问过厂商的工作人员&#xff0c;得到的答复是恢复备份的机制已经十分完善&#xff0c;保证用户使用安全毫无问题。不过&#xff0c;相信小伙伴们和我一样&#xff0c;内心还是…

大白技术控 | Windows10X 模拟器简单上手体验

点击蓝字“大白技术控”关注我哟加个“星标★”&#xff0c;每日 19:30&#xff0c;好文必达&#xff01;前言Windows10X 和 Windows10 有什么区别&#xff1f;当这个问题摆在我面前的时候&#xff0c;我就脱口而出&#xff1a;区别&#xff1f;双屏了呗&#xff01;这个答案有…

[蓝桥杯2016初赛]四平方和-数论+枚举

题目描述 四平方和定理&#xff0c;又称为拉格朗日定理&#xff1a;每个正整数都可以表示为至多4个正整数的平方和。 如果把0包括进去&#xff0c;就正好可以表示为4个数的平方和。 比如&#xff1a; 5 0^2 0^2 1^2 2^2 7 1^2 1^2 1^2 2^ 2&#xff08;^符号表示乘方的…

word List 21

word List 21 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

python哪个方向工资高_【看完这五大Python就业方向,你选择哪个?】- 环球网校

【摘要】当今世界充满了各种数据&#xff0c;而python是其中一种的重要组成部分。然而&#xff0c;若想其有所应用&#xff0c;我们需要对这些python理论进行实践。其中包含很多有趣的的过程&#xff0c;然后将其用于某些方面。其中&#xff0c;在就业上有五大Python就业方向。…

Asp.Net Core Identity 骚断腿的究极魔改实体类

前言默认的 Identity 实体类型在大多数时候已经基本够用&#xff0c;很多时候也只是稍微在 IdentityUser 类中增加一些自定义数据字段&#xff0c;比如头像。这次&#xff0c;我要向园友隆重介绍我魔改之后的 Identity 实体类&#xff0c;能支持一些特别风骚的操作。当然也完全…

[蓝桥杯2015决赛]四阶幻方

题目描述 把1~16的数字填入4x4的方格中&#xff0c;使得行、列以及两个对角线的和都相等&#xff0c;满足这样的特征时称为&#xff1a;四阶幻方。 四阶幻方可能有很多方案。如果固定左上角为1&#xff0c;请计算一共有多少种方案。 比如&#xff1a; 1 2 15 16 12 14 3 5 13 7…

数据结构---模式匹配

数据结构—模式匹配 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define N 100 int next[N]; void getNext(char *T,int *next,int m) {//求解当前字符前面的最大公共前缀和后缀int j 1,k0;next[j] 0;//从1开始…

CKEditor 4编辑器已与Vue.js集成

虽然 CKEditor 4 不是目前主要维护的分支&#xff0c;不过官方并没有让它落后于潮流。近日&#xff0c;CKEditor 团队发布了与 Vue.js 框架原生集成的 CKEditor 4。这就意味着&#xff0c;开发者可以通过<ckeditor />标签以 Vue.js 组件的形式使用 CKEditor 4 &#xff0…

python获取文件夹下文件_Python 获取目录下的文件列表与内容

下面的python例子是列举用户目录下面的文件 import os import sys #infoos.getcwd() #listfileos.listdir(os.getcwd()) inforaw_input("请输入要列举文件的目录&#xff1a;(如D:\\temp)") listfileos.listdir(info) filenameopen(infofile.txt,w) print listfile #…

[蓝桥杯2016初赛]卡片换位-bfs

题目描述 你玩过华容道的游戏吗&#xff1f;这是个类似的&#xff0c;但更简单的游戏。看下面 3 x 2 的格子 在其中放5张牌&#xff0c;其中A代表关羽&#xff0c;B代表张飞&#xff0c;* 代表士兵。还有一个格子是空着的。 你可以把一张牌移动到相邻的空格中去(对角不算相邻…

数据结构---KMP模式匹配病毒感染人的DNA检测

数据结构—KMP模式匹配病毒感染人的DNA检测 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define N 100 int next[N]; void getNext(char *T, int *next, int m) {//求解当前字符前面的最大公共前缀和后缀int j …

推荐一个很棒的开源工作流elsa-core

开源项目orchard主要开发人员Sipke Schoorstra 开源了一个netcore 工作流项目&#xff0c;地址&#xff1a;https://github.com/elsa-workflows/elsa-core&#xff0c;最新版本1.2&#xff0c;正在开发2.0版本 。Spike 是参照Orchard Core的工作流引擎的原理&#xff0c;将其转…

python如何引用txt_如何使用pip requirements.txt文件安装python模块附加组件

pip requirements.txt documentation表示可以使用类似的线安装附加功能 MyPackage3.0 [PDF] 所以在我的requirements.txt文件中,我有一行内容如下&#xff1a; requests2.9.1 [security] 但是,当我运行命令时,不是为请求模块安装安全附加功能&#xff1a; pip install -r requi…

dfs中return回溯问题

题目&#xff1a; 从1到n中选k个数进行排列 首先我们看这段代码&#xff1a; #include <iostream> using namespace std; int n, k; const int N 1010; int a[N]; bool st[N];void dfs(int u) {if (u k 1) {for (int i 1; i < k; i) {cout << a[i] <&l…

WTM系列视频教程:MVVM

WTM系列视频教程第三章&#xff1a;MVVM文字摘要&#xff1a;“要讲MVVM模式&#xff0c;我们先来讲一下传统的MVC模式&#xff0c;要讲MVC模式&#xff0c;我们先来讲一下没有模式。。。”“为了演示没有模式&#xff0c;咱们整个项目就保留一个Program.cs文件&#xff0c;不使…