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);
}

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

(0)

相关推荐

  • C语言实现静态顺序表的实例详解

    C语言实现静态顺序表的实例详解 线性表 定义一张顺序表也就是在内存中开辟一段连续的存储空间,并给它一个名字进行标识.只有定义了一个顺序表,才能利用该顺序表存放数据元素,也才能对该顺序表进行各种操作. 接下来看看静态的顺序表,直接上代码: SeqList.h #define _CRT_SECURE_NO_WARNINGS 1 #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include <stdio.h> #include <stdlib.h&g

  • C语言实现动态顺序表的实现代码

    C语言实现动态顺序表的实现代码 顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构.线性表采用顺序存储的方式存储就称之为顺序表.顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中. 静态实现:结构体内部只需两个成员,其中一个为固定大小(MAX)的数组,用来存放我们的数据.数组大小我们可以通过在头文件中改变MAX的值来改变. 动态实现:在内存中开辟一块空间,可以随我们数据数量的增多来扩容. 来看看动态的顺序表实现: 1.seqli

  • C语言实现的顺序表功能完整实例

    本文实例讲述了C语言实现的顺序表功能.分享给大家供大家参考,具体如下: seqlist.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include<cstdio> #include<malloc.h> #include<assert.h> #define SEQLIST_INIT_SIZE 8 #define INC_SIZE 3 //空间增量的大小 typedef int ElemType; typedef struc

  • 用C语言举例讲解数据结构中的算法复杂度结与顺序表

    数据结构算法复杂度 1.影响算法效率的主要因素 (1)算法采用的策略和方法: (2)问题的输入规模: (3)编译器所产生的代码: (4)计算机执行速度. 2.时间复杂度 // 时间复杂度:2n + 5 long sum1(int n) { long ret = 0; \\1 int* array = (int*)malloc(n * sizeof(int)); \\1 int i = 0; \\1 for(i=0; i<n; i++) \\n { array[i] = i + 1; } for(

  • C语言实现顺序表基本操作汇总

    本文汇总了C语言下实现及操作顺序表的方法,对于学习数据结构的朋友来说是一个不错的参考程序.完整代码如下: #include<stdio.h> #include<stdlib.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef int status ;

  • 利用C语言实现顺序表的实例操作

    本文实例讲述了C语言实现顺序表(线性表)的方法.分享给大家供大家参考,具体如下: 一:顺序表代码实现 #ifndef _SEQ_LIST_H #define _SEQ_LIST_H #include <stdio.h> #include <stdlib.h> #include <assert.h> #include <string.h> #define ElemType float //以float类型测试算法通用性,而不是以惯用的int #define I

  • C语言线性表的顺序表示与实现实例详解

    1.概述 通常来说顺序表是在计算机的内存中以数组的形式保存的线性表,是用一组地址连续的存储单元依次存储数据元素的线性数据结构.线性表采用顺序存储的方式存储就称之为顺序表.顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中. 将表中元素一个接一个的存入一组连续的存储单元中,这种存储结构就是顺序结构. 采用顺序存储结构的线性表简称为" 顺序表".顺序表的存储特点是:只要确定了起始位置,表中任一元素的地址都通过下列公式得到:LOC(ai)=LOC(a1)+(i-1)*L 1≤

  • C语言顺序表实现代码排错

    今天本来想写段代码练练手,想法挺好结果,栽了个大跟头,在这个错误上徘徊了4个小时才解决,现在分享出来,给大家提个醒,先贴上代码: 复制代码 代码如下: /******************************************** * 文件名称:sqlist.h * 文件描述:线性表顺序存储演示 * 文件作者:by Wang.J,in 2013.11.16 * 文件版本:1.0 * 修改记录:*********************************************/

  • c语言实现顺序表的基本操作

    数据结构顺序表操作 复制代码 代码如下: #include <stdio.h>#include <stdlib.h>#include <malloc.h>#define LIST_INIT_SIZE 100#define LISINCREMENT 10#define ElemType int#define Status inttypedef struct Sq{ ElemType *elem; int length; int listsize;}SqList;Statu

  • C语言顺序表的实现代码

    本文实例为大家分享了C语言实现顺序表的具体代码,供大家参考,具体内容如下 seqlist.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include<cstdio> #include<malloc.h> #include<assert.h> #define SEQLIST_INIT_SIZE 8 #define INC_SIZE 3 //空间增量的大小 typedef int ElemType; typedef stru

随机推荐