Dichotomy(递+非递)
输入:先输入进行二分搜索元素的个数,然后按大小依次输入(或随机生成,然后排序)每个数字,最后输入要求搜索的元素。
输出:要求搜索元素的下标(下标从0开始!)。
示例:输入:61 5 5 9 6 9 6,输出3
package Test3;import java.util.Scanner;public class Dechotomy {static int binsearch(int arr[],int left,int right,int key){ //二分查找的思想,定中间元素,大于arr[mid]的在右端,小于mid的在左端(用key比),递归调用int mid=(left+right)/2;if (left<=right) { //通过不断地递归,如果要查询的元素在数组中并不存在,会有left>right、返回-1if(key==arr[mid]) return mid;if(key<arr[mid]) return binsearch(arr,left,mid-1,key);if(key>arr[mid]) return binsearch(arr,mid+1,right,key);}return -1;}/* while (left <= right) { //非递归int mid = (left + right) / 2;if (key == arr[mid]) return mid;if (key > arr[mid]) left = mid + 1;if (key < arr[mid]) right = mid - 1;}return -1;
}*/private static void swap(int arr[],int i,int j) { int temp = arr[i];arr[i]=arr[j];arr[j]=temp;}static void bubblesort(int arr[]){ //冒泡for (int i = 1; i < arr.length; i++) {for (int j = 0; j < arr.length; j++) { if(arr[j]>arr[i]) swap(arr,i,j);}}}public static void main(String[] args) {Scanner s = new Scanner(System.in);int n=s.nextInt();int arr[]=new int[n];for (int i = 0; i < arr.length; i++) { arr[i]=s.nextInt();}bubblesort(arr); //写了排序不引用怎么会对?int key =s.nextInt();System.out.println(binsearch(arr,0,arr.length-1,key));}}
Dichotomy(递+非递)相关推荐
- OJ2755神器的口袋 普通递归+递推+递推滚动数组
代码如下: import java.util.Scanner; //神器的口袋 public class OJ2755 { static int[] weigth; static int[][] re ...
- 算法分析中递推式的一般代数解法
算法分析中经常遇到需要求解递推式的情况,即将递推式改写为等价的封闭形式.例如汉诺塔问题的时间复杂度递推形式为T(n)=2T(n−1)+1(n≥1)T(n)=2T(n−1)+1(n≥1),可以解出封闭形 ...
- C++ 递推与递归算法
递推 递推的基本思想:根据已有信息推出未知信息 递推解题思路: 数学建模 找出递推式与初始条件 青蛙跳台阶 剑指 Offer 10- II. 青蛙跳台阶问题 一只青蛙一次可以跳上 1 级台阶,也可以跳 ...
- 递归,递推,迭代的区别
递归 程序调用自身的编程技巧称为递归,是函数自己调用自己. 使用递归要注意的有两点: 递归就是在过程或函数里面调用自身: 在使用递归时, 必须有一个明确的递归结束条件, 称为递归出口. 递归分为两个阶 ...
- 浅谈斐波那契数列——从递推到矩阵乘法
说在前面 相信大家都已经知道这个中外著名的费波纳切数列了吧,关于费波那契数列有很多有趣的性质,但我们这里不讲,在这里我们只是利用斐波那契数列来引出另一个神奇的东西,矩阵乘法,递推在这里是起一个对比与铺 ...
- 【C/C++】值传递和址传递区别解析
概述: 首先我们要知道 "a的地址"和"a地址中的内容"的区别,数据是存放在内存中的,每一个变量都有一个内存地址, 变量的内容存放在对应内存地址的空间中 比方说 ...
- 基本最小二乘到递推最小二乘
基本最小二乘到递推最小二乘 基本最小二乘(LS) 先导知识: 从函数出发 残差 梳理 推导 基本思想: 开始推导 递推最小二乘法 背景 前N个输入输出数据 开始递推 递推优化 结论 Matlab 示例 ...
- c++算法基础必刷题目——递推
文章目录 递推 1.扫雷MINE 2.牛可乐的翻转游戏 递推 递推算法是一种简单的算法,即通过已知条件,利用特定关系得出中间推论,直至得到结果的算法.递推算法分为顺推和逆推两种. 1.扫雷MINE ...
- 递推与递归算法(兔子问题 C语言)
递推 递推思想跟枚举思想一样,都是接近人类思维方式的思想,甚至在实际生活具有比枚举思想更多的应用场景.人脑在遇到未知的问题时,大多数人第一直觉都会从积累的「先验知识」出发,试图从「已知」推导「未知」, ...
最新文章
- Windows 7使用MMC管理控制台“远程桌面”功能【转载】
- ▽算符在球坐标系_球坐标系下的角动量算符
- java实现遍历树形菜单方法——数据库表的创建
- mybatis-plus大批量数据插入缓慢问题
- python-循环的入门
- 贪 心 学用markdown
- java项目出现问号_苹果电脑启动Mac时,出现问号文件夹,解决方法
- C++_类和对象_对象特性_构造函数的分类以及调用---C++语言工作笔记041
- 新手 Spring 疑惑
- lnmp php 5.4,linux下搭建LNMP(linux+nginx+mysql+php)环境之php5.4安装
- 如何优雅的统计代码耗时?
- 单片机通过蜂鸣器播放任意音乐代码实现(2):音乐单片机代码自动生成
- 架构图、流程图、结构图、功能图、逻辑图
- java火星坐标转百度坐标,火星坐标(GCJ-02)转百度坐标(BD-09)算法验证
- python货币转化为资本的前提_Python与《资本论》:生产资本中劳动力 A 与生产资料 Pm 的配比关系...
- QQ群邮件批量群发源码
- Sematic UI框架的学习-button样式(2)
- pythonalist是什么意思_3. Python3轻食丨一个故事看懂List所有用法:1年级1班的班级生活...
- The eighth day
- mysql语句重命名索引_如何重命名MySQL中的索引