C语言实现顺序表的顺序查找和折半查找

 更新时间:2020年11月01日 12:14:39   作者:Andrelia20171760  
这篇文章主要为大家详细介绍了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);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C++实现LeetCode(79.词语搜索)

    C++实现LeetCode(79.词语搜索)

    这篇文章主要介绍了C++实现LeetCode(79.词语搜索),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • Qt实现简易QQ聊天界面

    Qt实现简易QQ聊天界面

    这篇文章主要为大家详细介绍了Qt实现简易QQ聊天界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 嵌入式C语言二级指针在链表中的应用

    嵌入式C语言二级指针在链表中的应用

    这篇文章主要为大家介绍了嵌入式C语言二级指针在链表中的应用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • C语言 栈与数组的实现详解

    C语言 栈与数组的实现详解

    栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素
    2022-04-04
  • Matlab实现三维投影绘制的示例代码

    Matlab实现三维投影绘制的示例代码

    这篇文章系小编为大家带来了一个三维投影绘制函数(三视图绘制),函数支持三维曲线、曲面、三维多边形、参数方程曲线、参数方程曲面的投影绘制,需要的可以参考一下
    2022-08-08
  • OpenCV中findContours函数参数详解

    OpenCV中findContours函数参数详解

    Opencv中通过使用findContours函数,简单几个的步骤就可以检测出物体的轮廓,很方便。本文将和大家一起探讨一下findContours方法中各参数的含义及用法,感兴趣的可以了解一下
    2022-08-08
  • C语言实现二值图像模拟灰值图像显示效果

    C语言实现二值图像模拟灰值图像显示效果

    这篇文章主要为大家详细介绍了C语言实现二值图像模拟灰值图像显示效果,分为图案法、抖动法两个方法实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • c语言实现单链表算法示例分享

    c语言实现单链表算法示例分享

    这篇文章主要介绍了c语言实现单链表算法示例,需要的朋友可以参考下
    2014-02-02
  • C++实现判断一个字符串是否为UTF8或GBK格式的方法

    C++实现判断一个字符串是否为UTF8或GBK格式的方法

    这篇文章主要介绍了C++实现判断一个字符串是否为UTF8或GBK格式的方法,涉及C++针对字符编码的遍历、判断、编码转换等相关操作技巧,需要的朋友可以参考下
    2017-11-11
  • 在C++17中实现无锁数据结构的方法详解

    在C++17中实现无锁数据结构的方法详解

    在探索 C++17 中的无锁数据结构之前,我们首先需要理解无锁编程的基本概念及其在现代软件开发中的重要性,在这个章节中,我们将深入探讨无锁编程的概念,以及它如何满足人类对于更高效、更可靠软件的本能需求,文中通过代码示例介绍的非常详细,感兴趣的朋友可以参考下
    2023-12-12

最新评论