算法第二章上机实践报告
时间:2019-09-23
本文章向大家介绍算法第二章上机实践报告,主要包括算法第二章上机实践报告使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
实践题目:7-2 改写二分搜索算法
问题描述:设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。
输入格式:
输入有两行:
第一行是n值和x值; 第二行是n个不相同的整数组成的非降序序列,每个整数之间以空格分隔。
输出格式:
输出小于x的最大元素的最大下标i和大于x的最小元素的最小下标j。当搜索元素在数组中时,i和j相同。 提示:若x小于全部数值,则输出:-1 0 若x大于全部数值,则输出:n-1的值 n的值
代码:
#include <iostream> using namespace std; int bisearch(int* a, int x, int l, int r) { if(l > r) { cout<<r<<" "<<l; return 0; } else { int mid = (l+r) / 2; if (x == a[mid]) { cout<<mid<<" "<<mid; return 0; } if (x < a[mid]) bisearch(a, x, l, mid-1); else bisearch(a, x, mid+1, r); } } int main() { int a[1001]; int n, x; cin >> n; cin >> x; for(int i = 0; i < n; i++) cin >> a[i]; bisearch(a ,x, 0, n-1); return 0; }
算法描述:改写二分算法的输出部分,结合递归算法,输出中位数。
算法时间及空间复杂度分析:
①比较,赋值:4,O(1)
②递归:T(n/2)
T(n) = 4 + T(n/2)
= 4 + 4 + T(n/4)
= ...
=O(log2n)
心得体会:
1.这次实践题目是根据二分查找进行改编,解决不同问题,让人感受到算法的强大魅力。
2.这次将循环结构while与递归比较if...else...搞混,程序的开销增多。结队打代码能发现自己所打代码出现的问题,也能学到很多自己所不知道的知识。
原文地址:https://www.cnblogs.com/liuyuany/p/11572953.html
- 49. 访问PostgreSQL数据库增删改查 | 厚土Go学习笔记
- Golang中Interface类型详解
- Go语言的网络编程简介
- 一条关于swap争用的报警邮件分析(二)(r8笔记第4天)
- Golang泛型编程初体验
- 厚土Go学习笔记 | 14. switch 的条件写的有点灵活,不过风格还是go的一贯风格
- Go语言·我的性能我做主
- 47. 访问MySql数据库实现增删改查 | 厚土Go学习笔记
- system表空间不足的问题分析(二) (r8笔记第5天)
- golang基于redis lua封装的优先级去重队列
- python基础知识——内置数据结构(元组)
- python基础知识——控制语句
- python基础知识——基本语法
- 11g主库归档自动删除的小问题分析 (r8笔记第1天)
- 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 数组属性和方法
- Android studio实现简单的计算器
- Thinkphp5框架实现获取数据库数据到视图的方法
- thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
- Android Studio实现简单计算器功能
- 深入学习微信网址链接解封的防封原理visit_type
- kotlin实现五子棋单机游戏
- thinkphp3.2框架中where条件查询用法总结
- Android10自动连接WiFi问题的解决
- Android写一个实时输入框功能
- android自定义view用path画长方形
- 机器学习:如何快速从Python栈过渡到Scala栈
- Android studio实现加法软件
- 解决php extension 加载顺序问题
- Android 获取drawable目录图片 并存入指定文件的步骤详解
- php基于 swoole 实现的异步处理任务功能示例