首页 > 其他分享 >C语言习题 折半查找

C语言习题 折半查找

时间:2023-04-05 20:00:40浏览次数:48  
标签:折半 return int cin value C语言 input position 习题


 

Problem F: C语言习题 折半查找

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 5189  Solved: 2102
[Submit][Status][Web Board]

Description

有n个数(n<20),已按从大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值。如果不在数组中输出0。

要求: 编写两个函数input和binbearch分别实现数组数据的输入和元素的查找。

 

Input

第一行数组元素的个数n

第二行n个数组元素的值

第三行要查找的值

 

Output

查找的值在数组中的位置

 

Sample Input

10
10 9 8 7 6 5 4 3 2 1
5

Sample Output

6

HINT

 

主函数已给定如下,提交时不需要包含下述主函数

 

/* C代码 */
 
int main()
 
{
 
    int a[20],n=0,value;
 
    int position;
 
    scanf("%d",&n);
 
    input(a,n);
 
    scanf("%d",&value);
 
    position =binsearch(a,n,value);
 
    printf("%d",position);
 
    return 0;
 
}
 
/* C++代码 */
 
int main()
 
{
 
    int a[20],n=0,value;
 
    int position;
 
    cin>>n;
 
    input(a,n);
 
    cin>>value;
 
    position =binsearch(a,n,value);
 
    cout<<position;
 
    return 0;
 
}

 

[Submit][Status][Web Board]

한국어 中文 فارسی English ไทย Anything about the Problems, Please Contact Admin:admin
All Copyright Reserved 2010-2014 HUSTOJ TEAM
GPL2.0 2003-2014 HUSTOJ Project TEAM
Help Maunal

代码

#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std ;
void input(int *a ,int n)
{
	int i ;
	for(i = 0 ; i<n ;i++)
	{
		cin >>a[i] ;
	}
	return ;
}
int binsearch(int *a,int n ,int key)
{
	
	int left = 0 ;
	int right = n ;
	int flag = 0 ;
	int mid ;
	while(left <=right )
	{
		 mid = (left+right)/2 ;
		if(a[mid]==key)
		{
			flag = 1 ;
			break ;
		}
		else if(a[mid]>key)
		{
			left = mid + 1 ;
		}
		else
			right = mid - 1 ;
		
	}
	if(flag == 1 )
	return mid +1 ;
	else
	return 0 ;
	
}
int main()
{
    int a[20],n=0,value;
    int position;
    cin>>n;
    input(a,n);
    cin>>value;
    position =binsearch(a,n,value);
    cout<<position;
    return 0;
}

 

标签:折半,return,int,cin,value,C语言,input,position,习题
From: https://blog.51cto.com/u_15970235/6171521

相关文章

  • C语言 switch 使用
    #include<stdio.h>intmain(){intn;scanf("%d",&n);switch(n){case1:printf("one\n");break;case2:printf("two\n");break;case3:printf("three\n");bre......
  • 逍遥自在学C语言 | 关系运算符
    前言一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、构成和表示方式关系运算符的作用是判断符号两边大小的关系C语言中的关系运算符主要有六个,如下表所示运算符名称示例......
  • c语言小技巧
    无符号右移 voidprintBinary(unsignedintn){   inti;   for(i=sizeof(n)*8-1;i>=0;i--){ //遍历整数的每一位       if((n>>i)&1){ //如果该位为1,则输出字符'1'           printf("1");       }......
  • C语言结构体大小分析
    title:C语言结构体大小分析author:saopigqwq233date:2022-04-05C语言结构体大小分析一,基本类型C语言自带的数据类型大小如下数据类型大小(字节)char1short2int4long4或8float4double8longdouble16二,自定义类型---structC语言除了......
  • C语言 静态变量的初始化
    一、C程序的内存分布C程序由下面5部分组成正文段(.text):通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域属于只读。在代码段中,也有可能包含一些只读的常量,例如字符串常量等。初始化数据段(.data):通常是指用来存放程序中已初......
  • linux下c语言的crypt函数怎么用?
    linux的crypt最近学校布置了一个网安的小作业,要用到linux里面的这个crypt函数,写一篇总结一下。首先我们要了解这个函数是用来做什么的。密码影子文件中存储了每一个用户的用户明文和其单向哈希过的秘文cipher="$1$C68vnJ27$1ttFZ1/Rylq/xi350A0NI0";密码字段用\(id\)salt$......
  • NFS练习题
    NFS练习题1.开放/nfs/share目录,提供给任意用户只读(/etc/exportsro)查询1.任意客户端2.任意的用户​​​​ 服务端showmoutexportfssystemctlstartnfs 修改了nfs配置文件,需要重启什么吗?修改了nfs配置文件,只需要让nfs重新读取该配置文件即可,你都不需要重新,因为你......
  • C语言——复杂指针的读写
     1int*(*(*(*abc)())[6])();2/*3*1、(*abc)()——函数指针4*2、(*(某1))[6]——某的数组的指针5*3、int*(*(某2))()——返回值为int*类型的某的函数指针6*组合方式:123217*组合:(以(指向((返回值为int*类型的(函数指针))数组)的指针)......
  • C语言字符串IP转4字节
    点击查看代码#include<stdio.h>#include<string.h>voidstr2ip(char*in,unsignedchar*out){ inti; inttmp[4]={0}; sscanf(in,"%d.%d.%d.%d",tmp,tmp+1,tmp+2,tmp+3); for(i=0;i<4;i++) { out[i]=tmp[i]&0x......
  • 逍遥自在学C语言 | 算数运算符
    前言一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、算数运算符简介C语言的算数运算符,是用来完成基本的算术运算的符号。按操作数个数可分为一元运算符(含一个操作数)和二元运算符......