输入:先输入进行二分搜索元素的个数,然后按大小依次输入(或随机生成,然后排序)每个数字,最后输入要求搜索的元素。

输出:要求搜索元素的下标(下标从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(递+非递)相关推荐

  1. OJ2755神器的口袋 普通递归+递推+递推滚动数组

    代码如下: import java.util.Scanner; //神器的口袋 public class OJ2755 { static int[] weigth; static int[][] re ...

  2. 算法分析中递推式的一般代数解法

    算法分析中经常遇到需要求解递推式的情况,即将递推式改写为等价的封闭形式.例如汉诺塔问题的时间复杂度递推形式为T(n)=2T(n−1)+1(n≥1)T(n)=2T(n−1)+1(n≥1),可以解出封闭形 ...

  3. C++ 递推与递归算法

    递推 递推的基本思想:根据已有信息推出未知信息 递推解题思路: 数学建模 找出递推式与初始条件 青蛙跳台阶 剑指 Offer 10- II. 青蛙跳台阶问题 一只青蛙一次可以跳上 1 级台阶,也可以跳 ...

  4. 递归,递推,迭代的区别

    递归 程序调用自身的编程技巧称为递归,是函数自己调用自己. 使用递归要注意的有两点: 递归就是在过程或函数里面调用自身: 在使用递归时, 必须有一个明确的递归结束条件, 称为递归出口. 递归分为两个阶 ...

  5. 浅谈斐波那契数列——从递推到矩阵乘法

    说在前面 相信大家都已经知道这个中外著名的费波纳切数列了吧,关于费波那契数列有很多有趣的性质,但我们这里不讲,在这里我们只是利用斐波那契数列来引出另一个神奇的东西,矩阵乘法,递推在这里是起一个对比与铺 ...

  6. 【C/C++】值传递和址传递区别解析

    概述: 首先我们要知道 "a的地址"和"a地址中的内容"的区别,数据是存放在内存中的,每一个变量都有一个内存地址, 变量的内容存放在对应内存地址的空间中 比方说 ...

  7. 基本最小二乘到递推最小二乘

    基本最小二乘到递推最小二乘 基本最小二乘(LS) 先导知识: 从函数出发 残差 梳理 推导 基本思想: 开始推导 递推最小二乘法 背景 前N个输入输出数据 开始递推 递推优化 结论 Matlab 示例 ...

  8. c++算法基础必刷题目——递推

    文章目录 递推 1.扫雷MINE 2.牛可乐的翻转游戏 递推   递推算法是一种简单的算法,即通过已知条件,利用特定关系得出中间推论,直至得到结果的算法.递推算法分为顺推和逆推两种. 1.扫雷MINE ...

  9. 递推与递归算法(兔子问题 C语言)

    递推 递推思想跟枚举思想一样,都是接近人类思维方式的思想,甚至在实际生活具有比枚举思想更多的应用场景.人脑在遇到未知的问题时,大多数人第一直觉都会从积累的「先验知识」出发,试图从「已知」推导「未知」, ...

最新文章

  1. Windows 7使用MMC管理控制台“远程桌面”功能【转载】
  2. ▽算符在球坐标系_球坐标系下的角动量算符
  3. java实现遍历树形菜单方法——数据库表的创建
  4. mybatis-plus大批量数据插入缓慢问题
  5. python-循环的入门
  6. 贪 心 学用markdown
  7. java项目出现问号_苹果电脑启动Mac时,出现问号文件夹,解决方法
  8. C++_类和对象_对象特性_构造函数的分类以及调用---C++语言工作笔记041
  9. 新手 Spring 疑惑
  10. lnmp php 5.4,linux下搭建LNMP(linux+nginx+mysql+php)环境之php5.4安装
  11. 如何优雅的统计代码耗时?
  12. 单片机通过蜂鸣器播放任意音乐代码实现(2):音乐单片机代码自动生成
  13. 架构图、流程图、结构图、功能图、逻辑图
  14. java火星坐标转百度坐标,火星坐标(GCJ-02)转百度坐标(BD-09)算法验证
  15. python货币转化为资本的前提_Python与《资本论》:生产资本中劳动力 A 与生产资料 Pm 的配比关系...
  16. QQ群邮件批量群发源码
  17. Sematic UI框架的学习-button样式(2)
  18. pythonalist是什么意思_3. Python3轻食丨一个故事看懂List所有用法:1年级1班的班级生活...
  19. The eighth day
  20. mysql语句重命名索引_如何重命名MySQL中的索引

热门文章

  1. 银行与银行之间的现金是如何流转的:央行支付清算系统
  2. Symbolic Graph Reasoning Meets Convolutions 符号图推理与卷积结合的方式
  3. 波束形成算法学习笔记之一(Endfire,broadside)
  4. 折纸效果! Cocos Creator 3.0
  5. UTF-8的繁体与简体转换
  6. latex编辑器的选择、texlive的安装及学位模板的使用
  7. 接口中的变量public static final
  8. 文字盘点:当今社会十句最恶俗的流行书面中文
  9. 201809-2买菜
  10. 用以促学——Linux进程后台运行的原理、方法、比较及其实现