二分查找法C语言实现
【问题描述】
生成一个随机数组A[64] ,在数组中查找是否存在某个数num。
【答案】
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h> //普通查找:
int Search(int *p, int n, int num) //找到返回下标,未找到返回-1
{
for (int i = ; i < n; i++)
{
if (p[i] == num)
return i;
} return -;
} //冒泡排序:
void Sort(int *p, int n)
{
for (int i = ; i < n - ; i++)
{
for (int j = ; j < n - - i; j++)
{
if (p[j] > p[j+])
{
int tmp = p[j];
p[j] = p[j + ];
p[j + ] = tmp;
}
}
}
} //二分查找:
int BinarySearch(int *p, int n, int num)
{
int low, high, mid;
low = ;
high = n - ;
mid = (low + high) / ; while (low <= high)
{
if (num == p[mid])
return mid;
else if (num < p[mid])
{
high = mid - ;
mid = (low + high) / ;
}
else
{
low = mid + ;
mid = (low + high) / ;
}
} return -;
} void main()
{
int a[];
time_t tms;
srand((unsigned int)time(&tms)); //生成随机数种子 for (int i = ; i < ; i++)
{
a[i] = rand() % ; //0~100之间的随机数
printf("%d\n", a[i]);
} //int num;
//printf("请输入要查找的数:\n");
//scanf("%d", &num); int ret;
//ret = Search(a, 64, num); Sort(a, ); printf("排序后:\n");
for (int i = ; i < ; i++)
printf("%d\n", a[i]);
int num;
printf("请输入要查找的数:\n");
scanf("%d", &num); ret = BinarySearch(a, , num); if (ret == -)
printf("未找到!\n");
else
printf("找到a[%d]=%d\n",ret,num); system("pause");
}
二分查找法C语言实现的更多相关文章
- 用c语言编写二分查找法
二分法的适用范围为有序数列,这方面很有局限性. #include<stdio.h> //二分查找法 void binary_search(int a[],int start,int mid ...
- R语言实现二分查找法
二分查找时间复杂度O(h)=O(log2n),具备非常高的效率,用R处理数据时有时候需要用到二分查找法以便快速定位 Rbisect <- function(lst, value){ low=1 ...
- 【C/C++学院】0723-32位与64位/调戏窗体程序/数据分离算法/内存检索/二分查找法/myVC
[送给在路上的程序猿] 对于一个开发人员而言,能够胜任系统中随意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并能够运用到系统中,由此简化系统的开发,是其架构生涯的第一步. ...
- jvascript 顺序查找和二分查找法
第一种:顺序查找法 中心思想:和数组中的值逐个比对! /* * 参数说明: * array:传入数组 * findVal:传入需要查找的数 */ function Orderseach(array,f ...
- java for循环和数组--冒泡排序、二分查找法
//100以内与7相关的数 for(int a=1;a<=100;a++){ if(a%7==0||a%10==7||a/10==7){ System.out.print(a+ ...
- 二分查找法 java
前几天去面试,让我写二分查找法,真是哔了狗! 提了离职申请,没事写写吧! 首先二分查找是在一堆有序的序列中找到指定的结果. public class Erfen { public static int ...
- 学习练习 java 二分查找法
package com.hanqi; import java.util.*; public class Test5 { public static void main(String[] args) { ...
- Java-数据结构与算法-二分查找法
1.二分查找法思路:不断缩小范围,直到low <= high 2.代码: package Test; import java.util.Arrays; public class BinarySe ...
- 选择、冒泡排序,二分查找法以及一些for循环的灵活运用
import java.util.Arrays;//冒泡排序 public class Test { public static void main(String[] args) { int[] ar ...
随机推荐
- 每天一个Linux命令 - 【chkconfig】
[命令]:chkonconfig [语法]:chkconfig [选项] [功能介绍]:chkconfig 命令是Redhat兼容的Linux发行版中的系统服务管理工具,它可以查询和更新不同的运行等一 ...
- Java实现多线程
Java中实现多线程有两种手段: 继承Thread类(此类为多线程的操作类),而且必须明确地重写Thread类中的run()方法,此方法为线程的主题 实现Runnable接口 Thread类和Runa ...
- javascript的加载、解析、执行对浏览器渲染的影响
javascript的加载方式,总得来说是在页面上使用script来声明,以及动态的加载这些方式,而动态的加载,在很多js库中都能够很好的去处 理,从而不至于阻塞其他资源的加载,并与其并行加载下来.这 ...
- Dubbo+zookeeper应用的入门案例
前提:Linux安装zookeeper Dubbo管理中心部署 简单案例的项目结构: 1,demo_parent的pom.xml,用来统一管理依赖 <?xml version="1. ...
- 在zookeeper集群的基础上,搭建solrCloud
1 将在window中部署的单机版solr上传到node-01中 cd /export/software/ rz 选择资料中的solr.zip进行上传(此zip就是 solr的简单部署:在tomca ...
- linux su su -
本人以前一直习惯直接使用root,很少使用su,前几天才发现su与su -命令是有着本质区别的! 大部分Linux发行版的默认账户是普通用户,而更改系统文件或者执行某些命令,需要root身份才能进行, ...
- 字符编码(续)---Unicode与ANSI字符串转换以及分辨字符编码形式
Unicode与ANSI字符串转换 我们使用windows函数MultiByteToWideChar将多字节字符串转换为宽字符字符串,如下: int MultiByteToWideChar( UINT ...
- SQL SERVER 2008权限配置
我要的结果是这样:只能有查询表的权限,而且还要有运行SQL Server Profiler的权限.这样才能跟踪发现问题,当然解决问题是另外一回事,即不能有修改和更新存储过程的权限. 我在分配角色成员时 ...
- 551. Student Attendance Record I 从字符串判断学生考勤
[抄题]: You are given a string representing an attendance record for a student. The record only contai ...
- Luogu 4473 [国家集训队]飞飞侠
BZOJ 2143 新技能:并查集优化最短路. 暴力最短路是$O(n^4)$的,然后拿个线段树优化一下连边就$O($能过$)$了. 但是这样都太慢了. 我们考虑一个点如果之前被更新过了,那么之后就不会 ...