讨论1.5 分析“二分法”
时间:2019-04-19
本文章向大家介绍讨论1.5 分析“二分法”,主要包括讨论1.5 分析“二分法”使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
目录
1.题目
查找算法中的“二分法”是这样定义的:
给定N个从小到大排好序的整数序列List[],以及某待查找整数X,我们的目标是找到X在List中的下标。即若有List[i]=X,则返回i;否则返回-1表示没有找到。
二分法是先找到序列的中点List[M],与X进行比较,若相等则返回中点下标;否则,若List[M]>X,则在左边的子系列中查找X;若List[M]<X,则在右边的子系列中查找X。
试写出算法的伪码描述,并分析最坏、最好情况下的时间、空间复杂度。
2.分析过程
3.源代码
#include <iostream>
using namespace std;
int binarySearch(int list[], int x, int n);
int main()
{
int a[]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int x;
cout << "请输入要查找的数字x\n";
cin >> x;
int n = sizeof(a) / sizeof(a[0]);
int index = binarySearch(a, x, n);
if (index != -1)
cout << "下标为:" << index << endl;
else
cout << "没有找到" << x << "的值" << endl;
system("pause");
return 0;
}
int binarySearch(int list[], int x, int n)
{
int low, high, now;
low = 0;
high = n-1;
now = (low+high) / 2;
while (high >= low)
{
if (list[now] == x)
return now;
else if (list[now] > x)
high = now - 1;
else
low = now + 1;
now = (high + low) / 2;
}
return -1;
}
4.运行结果
- 一大拨漏洞来袭,eBAY的黑色星期五
- 基于 Docker 持续交付平台建设的实践
- Struts原理与实践
- 玩转WiFi Pineapple之看我如何优雅的盗取CMCC账号
- iOS多边形马赛克的实现(下)
- 见招拆招:绕过WAF继续SQL注入常用方法
- 从零开始在Python中实现决策树算法
- 走进科学:揭秘如何入侵电视机
- iOS多边形马赛克的实现(上)
- Android终端上视频转GIF的实现及GIF质量讨论
- Android手机上用户操作模拟方法的研究与实现
- Firefox内存释放重用漏洞高级利用(Pwn2Own2014、CVE-2014-1512)
- android 线程那点事
- android 向webview传值
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- php str_replace 字符串替换
- strstr和strcchr查找字符串和区别
- php获取当前操作系统类型 PHP_OS
- php is_dir 判断是否存在这目录
- php strtoupper 和 array_change_key_case 字符串转大写,小写
- php register_shutdown_function响应error 配合error_get_last 捕获错误
- C# 实现Winform全屏后不遮挡任务栏,显示任务栏
- [TP5填坑]关于助手函数input一不小心取不到get值的解决办法
- 关于nginx为站点绑定域名以及绑定多个域名
- PBMC or 全血,应该选哪个?
- 关于thinkphp5的报错 "mkdir() Permission denied"的解决
- 不同步节点在线使用Remix开发以太坊Dapp及solidity学习入门 ( 一 ):智能合约HelloWorld
- solidity编写eth智能合约之contract 创建合约(二)
- solidity modifier函数修改器 智能合约开发知识浅学(三)
- solidity struct 结构体创建与使用浅学 (四)