import java.util.Arrays;
import java.util.Scanner;/*** 折半查找(二分查找):从中间找(数组默认排好序了)* @author Family happy Lee**/
public class 折半查找并插入 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int[] a = {12,24,35,89,410,660,789};System.out.println("请输入要查找的数");int number =scanner.nextInt();int low=0,high=a.length-1,middle;while(low<=high) {middle = (low+high)/2;if(number>a[middle]) {low = middle+1;}else {if(number<a[middle]) {high = middle-1;}else {System.out.println(number+"在数组中位置是"+middle);return;}}}System.out.println(number + "在数组中不存在");Scanner sc = new Scanner(System.in);int num = number;for(int i=0;i<a.length-1;i++) {if((num>a[i])&&(num<a[i+1])) {int index = i+1;sc.close();if (index > a.length || index < 0) {System.out.println("输入的下标太大或不合法");return;}arrayInterposition(a, index, num);}}}/*** 将指定数字添加到指定下标上* @param array int类型的数组* @param index int类型 指定放入的下标* @param num int类型 指定放入的数字* @return 返回true表示方法运行成功返回false表示方法运行失败*/static boolean arrayInterposition(int[] array, int index, int num) {//参数合法性判断if (null == array || array.length == 0 || index < 0) {System.out.println("输入的参数不合法");return false;}//复制一个长度+1的数组int[] arr = Arrays.copyOf(array, array.length + 1);//循环将数字后移for (int i = arr.length-1; i > index; i--) {arr[i] = arr[i - 1];}//将指定数字放到指定下标上arr[index] = num;//输出数组System.out.print("数组更新为:");System.out.println(Arrays.toString(arr));return true;}}

Console:

请输入要查找的数
36
36在数组中不存在
数组更新为:[12, 24, 35, 36, 89, 410, 660, 789]

或:

请输入要查找的数
24
24在数组中位置是1

折半查找并插入(在一个有序数组中通过二分查找数字,若存在,指出其是数组中第几个元素;反之插入数组并有序化)相关推荐

  1. 代码随想录Day01:数组理论基础、二分查找、移除元素

    目录 数组理论基础.二分查找.移除元素 1.数组理论基础 2.Leetcode704.二分查找 方法一 左闭右闭: 方法二 左闭右开: 方法三 左开右开: 方法四 左开右闭: 3.Leetcode27 ...

  2. 【Day1】数组、704二分查找、27移除元素

    [Day1]数组.704二分查找.27移除元素 数组 704 二分查找 版本一 左闭右闭 即[left, right] 版本二 左闭右开 即[left, right) 27 移除元素 暴力解法 双指针 ...

  3. cuda中的二分查找

    使用背景 通常,在做高性能计算时,我们需要随机的连接某些点.这些点都具有自己的度量值,显然,度量值越大的值随机到的概率就会越大.因此,采用加权值得方法: void getdegreeSum(DG *g ...

  4. SGISTL源码探究-stl_alog.h中的二分查找算法

    前言 在上一小节中我们分析了stl_algo.h中的部分算法.本小节中我们将继续分析其中关于二分查找类的算法,即lower_bound.upper_bound.binary_search.equal_ ...

  5. python实现二分查找_数据结构和算法:Python实现二分查找(Binary_search)

    在一个列表当中我们可以进行线性查找也可以进行二分查找,即通过不同的方法找到我们想要的数字,线性查找即按照数字从列表里一个一个从左向右查找,找到之后程序停下.而二分查找的效率往往会比线性查找更高. 一. ...

  6. 详解【C语言】中的二分查找法和折半查找法(例题解答)

    目录 问题 思路 详解 代码 问题 在一个有序数组中查找具体的某个数字n 比如我买了一双鞋,你好奇问我多少钱,我说不超过300元.你还是好奇,你想知道到底多少,我就让你猜,你会怎么猜? 答案:你每次猜 ...

  7. 第一天学习笔记之数组(冒泡排序+二分查找)

    为了更深理解ArrayList实现原理,从今天开始学习算法和数据结构,更好的掌握底层原理. 在实际的项目工作过程中,数组已经很少用到,被各种封装的第三方类占据我们的程序中 但是要想写出优雅的代码,第三 ...

  8. C语言中的二分查找法

    ...cpp 二分查找法也称折半查找法,是一种有序的查找方法,时间复杂度为log以2为底n的对数.如果是无序的则要先进行排序操作.基本思想是:把要查找的值和中间元素比较.例如在1 2 3 4 5 6 ...

  9. python中的二分查找

    一,定义 二分搜索是一种在有序数组中查找某一特定元素的搜索算法.搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束:如果某一特定元素大于或者小于中间元素,则在数组大于或小于中 ...

最新文章

  1. (建议收藏)产品经理要懂的SaaS知识,一文打包给你
  2. 【C++教程】03.第一个程序解析
  3. docker 根据标签删除镜像_10 个 Docker 镜像安全最佳实践
  4. LoRaWAN开放式实验平台
  5. android 振动传感器,Android光线传感器
  6. LeetCode:2. 两数相加(中等)
  7. MySQL的binlog
  8. nagios服务配置
  9. Springboot整合SpringSecurity--对静态文件进行权限管理
  10. VS2010安装教程
  11. 研究称在家中工作可提高员工工作效率
  12. excel2007不显示文件名
  13. matlab幻方置乱,幻方置乱,magic scrambling,音标,读音,翻译,英文例句,英语词典
  14. Invalid bound statement (not found) 五种解决方法
  15. 华文行楷字帖欣赏_毛笔行书欣赏,华文行楷在线转换,偏旁部首练字帖,
  16. 微信小程序退出功能(退回到微信)
  17. 基于Android的校园跳蚤市场(二手)的设计与实现(新版)
  18. Java中map的含义
  19. 对于爱情的透彻性理解:恋爱变成一场无间道...
  20. Android Makefile 及Android.mk 整理

热门文章

  1. 两步实现在C代码中快速集成gtest进行单元测试
  2. 微信朋友圈十周年,你设置了三天可见吗?
  3. LT8911EXB功能概述 LT8911EXB是MIPI转EDP一般能用于车载,平板,教育电子,广告机,收银机等等
  4. java基本数据类型Char
  5. i7 11800h参数
  6. 国内哪一家银行的账户最适合用来接收来自国外机构的美元汇款?
  7. 豆瓣评分9.4!跟邱锡鹏教授一起学「神经网络与深度学习」,7月19日开课
  8. Linux网卡模块,裁剪Linux并实现网卡模块的安装(附有命令移植的脚本)
  9. 工业自动化数据采集方案
  10. VBS的msgbox函数用法