C语言实现顺序表的顺序查找和折半查找
作者:Andrelia20171760 发布时间:2021-10-24 13:17:19
标签:C语言,顺序表
本文实例为大家分享了C语言实现顺序表的顺序查找和折半查找的具体代码,供大家参考,具体内容如下
顺序查找:
#include <iostream>
using namespace std;
int SeqSearch(int r[],int n,int k)
{
r[0]=k;//下标0用作哨兵存放要查询的数
int i=n;
while(r[i]!=k)//不用判断下标i是否越界
{
i--;
}
return i;
}
int main()
{
int n;
cout<<"请输入数组元素个数:"<<endl;
cin>>n;
int a[n+1];
cout<<"请输入数组元素:"<<endl;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
int k;
cout<<"请输入要查询的数:"<<endl;
cin>>k;
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
cout<<"该数在数组中的位置为:";
cout<<SeqSearch(a,n,k);
return 0;
}
折半查找:
#include<iostream>
using namespace std;
int BinSearch1(int r[],int n,int k)//非递归
{
int low=1,high=n;//设置查找区间
while(low<=high)//如果区间存在
{
int mid=(low+high)/2;
if(k<r[mid])high=mid-1;//查找在左半区进行,回到while那一步
else if(k>r[mid])low=mid+1;
else return mid;
}
return 0;//如果区间不存在,则返回0,查找失败
}
int BinSearch2(int r[],int low,int high,int k)//递归
{
int mid=(low+high)/2;
if(low>high) return 0;
else
{
if(k<r[mid])BinSearch2(r,low,mid-1,k);
else if(k>r[mid])BinSearch2(r,mid+1,high,k);
else return mid;
}
}
int main()
{
int n;
cout<<"请输入数组元素个数:";
cout<<endl;
cin>>n;
int a[n+1];
cout<<"请输入数组元素:";
cout<<endl;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
cout<<"请输入要查找的数:";
cout<<endl;
int k;
cin>>k;
cout<<"该数在数组中的位置是:"<<endl;
cout<<BinSearch1(a,n,k);cout<<endl;
cout<<BinSearch2(a,1,n,k);
}
来源:https://blog.csdn.net/Andrelia20171760/article/details/91610850


猜你喜欢
- try { // 方
- 本文实例为大家分享了Androidstudio调用摄像头拍照并保存照片的具体代码,供大家参考,具体内容如下首先在manifest.xmlns
- Android Studio 是谷歌基于IntelliJ IDEA开发的安卓开发工具,有点类似 EcliPSe ADT,Android St
- 使用的场景常常遇到一些项目中多环境切换的问题。比如在开发过程中用到开发环境,在测试中使用测试环境,在生产中用生产环境的情况。springbo
- IDEA maven项目中刷新依赖的方法IDEA maven项目中刷新依赖分为自动刷新 和 手动刷新 两种!自动刷新File-Setting
- 1.使用的是maven项目,添加依赖<!-- mybatis-plus begin --> <depend
- 常用依赖 //1.直接依赖第三方开源库,一般是托管在 jitpack 或者 jcenter implementation 'com.
- import java.util.ArrayList;import java.util.List;public class Test2 {&
- RecyclerView目前来说对大家可能不陌生了。由于在公司的项目中,我们一直用的listview和gridview。某天产品设计仿照美团
- 发现问题:之前用springAOP做了个操作日志记录,这次在往其他类上使用的时候,service一直注入失败,找了网上好多内容,发现大家都有
- 本文实例讲述了Java日期操作类常见用法。分享给大家供大家参考,具体如下:一 取出当前日期时间1 代码import java.time.*;
- 目录QR二维码QR二维码格式QR二维码结构APIQRCodeDetector类结构检测QR二维码识别QR二维码检测并识别QR二维码操作结果源
- DOM4可以读取和添加XML文件的属性或者元素读取属性:public static void ReadAttributes() throws
- import java.io.FileNotFoundException;import java.io.FileOutputStream;i
- 一、Jsoup的主要功能Jsoup是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API
- 目录1、简介2、适用情况3、mybatis-plus前期准备(工程将以 H2 作为默认数据库进行演示)1、使用 Spring Initial
- 废话不多说,直接上代码,小伙伴们仔细看 * 释吧。/*简单的复制 剪切 粘贴 功能 操作: &nb
- 个人认为,提供params关键字以实现方法形参个数可变是C#语法的一大优点。在方法形参列表中,数组类型的参数前加params关键字,通常可以
- 本文实例为大家分享了unity3d实现七天签到功能的具体代码,供大家参考,具体内容如下在很多游戏中都有签到功能,(这里记录的是7天连续签到功
- Java.lang 中自带的注解@Override:表示当前的方法定义将覆盖基类的方法。如果你不小心拼写错误,或者方法签名被错误拼写的时候,