数据结构实验之查找四:二分查找

简介: 数据结构实验之查找四:二分查找

数据结构实验之查找四:二分查找

Time Limit: 30 ms Memory Limit: 65536 KiB

SubmitStatisticDiscuss

Problem Description

在一个给定的无重复元素的递增序列里,查找与给定关键字相同的元素,若存在则输出找到的位置,不存在输出-1。

Input

一组输入数据,输入数据第一行首先输入两个正整数n ( n < = 10^6 )和m ( m < = 10^4 ),n是数组中数据元素个数,随后连续输入n个正整数,输入的数据保证数列递增。

随后m行输入m个待查找的关键字key

Output

若在给定的序列中能够找到与关键字key相等的元素,则输出位序(序号从0开始),否则输出-1。

Sample Input

8 3

4 6 8 9 13 20 21 22

6

8

17

Sample Output

1

2

-1

Hint

Source

xam

#include <stdio.h>
#include <stdlib.h>
int a[1001001];
int find(int a[], int l, int r, int key)
{
    int mid;
    int i, j;
    i = l, j = r, mid = (i+j) / 2;
    while(i <= j)
    {
        if(a[mid] == key)
        {
            return mid;
        }
        else if(a[mid] < key)
        {
            return find(a,mid+1,j,key);
        }
        else
        {
            return find(a,i,mid-1,key);
        }
    }
    return -1;
}
int main()
{
    int n, m, i, num, key;
    scanf("%d%d", &n, &m);
    for(i = 0; i< n; i++)
    {
        scanf("%d", &a[i]);
    }
    for(i = 1; i <= m; i++)
    {
        scanf("%d", &key);
        num = find(a,0,n-1,key);
        printf("%d\n", num);
    }
    return 0;
}

 

相关文章
数据结构上机实验之二分查找
数据结构上机实验之二分查找
|
4月前
|
算法 JavaScript 前端开发
JavaScript算法和数据结构:写一个二分查找的函数。
JavaScript算法和数据结构:写一个二分查找的函数。
32 0
|
6月前
|
算法
数据结构与算法之经典算法《二分查找》
数据结构与算法之经典算法《二分查找》
22 0
|
1月前
【手撕数据结构】二分查找(好多细节)
【手撕数据结构】二分查找(好多细节)
|
2月前
|
机器学习/深度学习 算法 Java
【数据结构查找算法篇】----二分查找【实战项目】
【数据结构查找算法篇】----二分查找【实战项目】
27 1
|
4月前
|
算法 C语言
从0开始学习数据结构 C语言实现 1.前篇及二分查找算法
从0开始学习数据结构 C语言实现 1.前篇及二分查找算法
37 0
|
7月前
|
算法 Java 索引
Java【数据结构】二分查找
Java【数据结构】二分查找
48 0
|
算法 C++
C++数据结构算法(三)二分查找
C++数据结构算法(三)二分查找
C++数据结构算法(三)二分查找
|
10月前
|
算法 Java
数据结构(3)基础查找算法——顺序查找、二分查找(JAVA版)
3.1.顺序查找 顺序查找,时间复杂度是O(n),逻辑很简单,就是依次遍历一个线性的数据结构判断所要查找的目标数据是否在这个数据结构里。以下是代码实现:
53 0
|
10月前
|
算法 C++
【数据结构与算法】数组1:二分查找 & 移除元素
【数据结构与算法】数组1:二分查找 & 移除元素
50 0