我就不信你看完还学不会顺序查找和折半查找的算法

简介: 我就不信你看完还学不会顺序查找和折半查找的算法

目录



前言

小白求关注呜呜呜!



1.实现顺序查找

代码如下(示例):

#include<stdio.h>
#include<malloc.h>
#define MAXL 100
typedef int KeyType;
typedef char InfoType;
typedef struct
{
  KeyType key;
  InfoType data;
} RecType;
void CreateList(RecType R[],KeyType keys[],int n)
{
  for(int i = 0;i<n;i++)
  R[i].key=keys[i];
}
void DispList(RecType R[],int n)
{
  for(int i=0;i<n;i++)
     printf("%d",R[i].key);
  printf("\n");
}
#include"seqlist.cpp"
int SeqSearch(RecType R[],int n,KeyType k)
{
  int i=0;
  while(i<n&&R[i].key!=k)
  {
    printf("%d",R[i].key);
    i++;
  }
  if(i>=n)return 0;
  else
  {
    printf("%d",R[i].key);
    return i+1;
  }
}
int main()
{
  RecType R[MAXL];
  int n=10,i;
  KeyType k =5;
  int a[]={3,6,2,10,1,8,5,7,4,9};
  CreateList(R,a,n);
  printf("关键字序列:");DispList(R,n);
  printf("查找%d所比较的关键字:\n\t",k);
  if((i=SeqSearch(R,n,k))!=0)
     printf("\n元素%d的位置是%d\n",k,i);
  else
     printf("\n元素%d不在表中\n",k);
  return 1;
}


2.实现折半查找

代码如下(示例):

#include<stdio.h>
#include<malloc.h>
#define MAXL 100
typedef int KeyType;
typedef char InfoType;
typedef struct
{
  KeyType key;
  InfoType data;
} RecType;
void CreateList(RecType R[],KeyType keys[],int n)
{
  for(int i = 0;i<n;i++)
  R[i].key=keys[i];
}
void DispList(RecType R[],int n)
{
  for(int i=0;i<n;i++)
     printf("%d",R[i].key);
  printf("\n");
}
#include"seqlist.cpp"
int BinSearch(RecType R[],int n,KeyType k)
{
  int low =0,high=n-1,mid,count =0;
  while(low<=high)
  {
    mid =(low+high)/2;
    printf("  第%d次比较:在[%d,%d]中比较元素R[%d];%d\n",
    ++count,low,high,mid,R[mid].key);
    if(R[mid].key==k)
      return mid+1;
    if(R[mid].key>k)
      high=mid-1;
    else
      low=mid+1;
  }
  return 0;
}
int main()
{
  RecType R[MAXL];
  KeyType k=9;
  int a[]={1,2,3,4,5,6,7,8,9,10},i,n=10;
  CreateList(R,a,n);
  printf("关键字序列:");DispList(R,n);
  printf("查找%d的比较过程如下:\n",k);
  if((i=BinSearch(R,n,k))!=-1)
     printf("元素%d的位置是%d\n",k,i);
  else
     printf("元素%d不在表中\n",k);
  return 1;
}



总结

我是不会飞的飞鸟,如果文章对你有帮助就点赞关注,谢谢!


相关文章
|
7月前
|
算法 Java
折半查找算法[二分查找法]算法的实现和解决整数溢出问题~
折半查找算法[二分查找法]算法的实现和解决整数溢出问题~
|
10月前
|
算法 C语言
C语言:使用 普通方法 和 二分查找算法(折半查找算法) 在一个有序数组中查找具体的某个数字n-2
第一步: (1). 设置初始数组:int arr[]。 (2). 生成相关变量: int n = 0; -- 存放从键盘输入的要查找的值; int i = 0; -- 循环变量;
|
6月前
|
算法 C语言
C语言-折半查找(二分查找)算法详解
C语言-折半查找(二分查找)算法详解
77 0
|
10月前
|
算法 C语言
C语言:使用 普通方法 和 二分查找算法(折半查找算法) 在一个有序数组中查找具体的某个数字n-1
思路一:普通方法 (逻辑简单,在无序数组中也可以使用,但效率较低,需要逐个查找) 总体思路:
|
10月前
|
机器学习/深度学习 存储 算法
折半查找算法
我们常常需要对数据进行查找,修改,查找数据有许多方法,我们先看看最简单的顺序查找
|
11月前
|
算法 搜索推荐 编译器
用调试来帮你分析并拿捏折半插入排序算法的流程
用调试来帮你分析并拿捏折半插入排序算法的流程
65 0
|
11月前
|
算法 测试技术 API
【LeetCode算法-->折半查找】
test1:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
|
算法
【21天算法学习】折半查找
【21天算法学习】折半查找
72 0

热门文章

最新文章