【Java数据结构与算法】第十七章 二分查找(非递归)和分治算法(汉诺塔)
第十七章 二分查找(非递归)和分治算法(汉诺塔)
文章目录
- 第十七章 二分查找(非递归)和分治算法(汉诺塔)
- 一、二分查找
- 1.思路
- 2.代码实现
- 二、分治算法(汉诺塔)
- 1.概述
- 2.汉诺塔
一、二分查找
1.思路
int[] arr = {1,3,8,10,11,67,100}(默认数组升序)
- while 循环 left 不小于 right 时,退出
- 找到中间结点 mid,小于目标结点则向右(left = mid + 1)、大于则向左(right = mid - 1)
2.代码实现
package com.sisyphus.binarysearchnorecursion;import java.util.Scanner;/*** @Description: 二分查找(非递归)$* @Param: $* @return: $* @Author: Sisyphus* @Date: 7/27$*/
public class BinarySearchNoRecur {public static void main(String[] args) {int[] arr = {1,3,8,15,23,39};Scanner scanner = new Scanner(System.in);System.out.println("请输入你要查找的整数:");int target = scanner.nextInt();int index = binarySearch(arr,target);System.out.println("要找的数的索引为:" + index);}private static int binarySearch(int[] arr, int target){int left = 0;int right = arr.length - 1;while (left <= right){int mid = (left + right) / 2;if (target == arr[mid]){return mid;}else if(target > arr[mid]){left = mid + 1;}else{right = mid - 1;}}return -1;}
}
二、分治算法(汉诺塔)
1.概述
分治算法,即分而治之:把一个复杂问题分成两个或更多的相同或相似子问题,直到最后子问题可以简单地直接求解,最后将子问题的解合并为原问题的解。归并排序就是一个典型的分治算法
分治算法遵循三个步骤:
- 分解:分解原问题为结构相同的子问题(即寻找子问题)
- 解决:当分解到容易求解的边界后,进行递归求解
- 合并:将子问题的解合并成原问题的解
伪代码:
Divide-and-Conquer(P)
if |P| ≤ n0then return(ADHOC(P))
将 P 分解为较小的子问题 P1,P2,……,Pkfor i ← 1 to kdo yi ← Divide-and-Conquer(Pi)
【Java数据结构与算法】第十七章 二分查找(非递归)和分治算法(汉诺塔)相关推荐
- 数据结构之栈与递归的应用(汉诺塔递归解法)
上一节简单的讲述了递归的实现与简单应用,接下来我们说一下另一个经典应用. 汉诺塔递归解法 一.起源: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子, ...
- 算法 - 二分查找(非递归实现二分查找)
package Algorithm.binarysearchnorecursion;public class BinaaySearchNoRecur {public static void main( ...
- 二分查找非递归方式实现
思路分析 代码实现 package com.atguigu.binarysearchnorecursion;/*** @创建人 wdl* @创建时间 2021/4/2* @描述*/ public cl ...
- 算法(9)汉诺塔图解及其代码实现
写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结及记录,如果您对 Java.算法 感兴 ...
- 用python递归的算法解决汉诺塔问题
关于递归的四条基准法则 基准情形: 必须由某些基准情形,它无需递归就能解出 不断推进: 对于那些需要递归的情形,每一次递归调用都必须要使求解的状况朝接近基准情形的方向推进 设计法则: 假设所有的递归调 ...
- 信息学奥赛一本通 提高篇 第一部分 基础算法 第2章 二分与三分
信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分 信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分_mrcrack的博客-CSDN博客_信息学奥赛一本通 ...
- Java算法--第二章--查找与排序(2)递归基础--佩波那契最大公约数插入排序汉诺塔
Java算法–第二章–查找与排序(2)递归基础 一.找重复 1.找到一种划分方法 2.找到递推公式或者等价转换 都是父问题转化为求解子问题 二.找变化的量 变化的量通常要作为参数 三.找出出口 代码: ...
- 用java编写汉诺塔问题_数据结构与算法之汉诺塔问题(Java递归)
汉诺塔问题: 有三根柱子,源杆A,暂存杆temp,目的杆C A上有n层盘子,由小到大向下排列,现需要将A杆的盘子移到C杆中 要求:1)大的盘在下面,小的盘在上面 2)一次只能移动一个盘子 个人思路:先 ...
- 经典算法之左边界二分查找法(俗称左边界二分搜索法)
经典算法之左边界二分查找法(俗称左边界二分搜索法) 文章目录 经典算法之左边界二分查找法(俗称左边界二分搜索法) 前言 一.什么左边界二分查找法? 二.代码实现 总结 前言 就算法而言,我们主要学习的 ...
最新文章
- oracle+trunkc,Oracle常用备份与恢复操作
- Nginx反向代理多个应用时,通过BluePring使Flask支持二级路径(URL前缀)
- 为什么 Java 线程没有 Running 状态?
- 前端开发工具vue.js开发实践总结
- Linux下对Verilog文件进行leda检错
- excel怎么设置打印区域_别再浪费打印纸了!这样设置,Excel表格再大都能打印成一页!...
- python beautiful soup 标签完全相同_Python爬取Python教程并制作成pdf
- matlab中计算不等式的解,matlab解不等式
- o00o0o php,PHP $O00OO0=urldecode eval 解密,记一次商业源码的去后门
- 物体运动到一个点停止_教科版五年级上册第四单元运动和力复习要点
- antd upload手动上传_SpringBoot 如何上传大文件?
- 高清 GJB-5000B,2021最新版发布,软件能力成熟度模型
- mysql sql语句优化面试题_SQL面试题之SQL优化
- springboot+基于JavaWEB学生课程考试系统 毕业设计-附源码171548
- CHM格式打不开解决方案
- 基于CNN的人脸 性别、年龄识别
- 无为的生活中有所感悟的一篇劝勉高考生的文章
- image标签不显示照片img标签能显示
- Python+uiautomator2手机UI自动化测试实战
- Logistic Regression 逻辑斯蒂回归
热门文章