折半查找并插入(在一个有序数组中通过二分查找数字,若存在,指出其是数组中第几个元素;反之插入数组并有序化)
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
折半查找并插入(在一个有序数组中通过二分查找数字,若存在,指出其是数组中第几个元素;反之插入数组并有序化)相关推荐
- 代码随想录Day01:数组理论基础、二分查找、移除元素
目录 数组理论基础.二分查找.移除元素 1.数组理论基础 2.Leetcode704.二分查找 方法一 左闭右闭: 方法二 左闭右开: 方法三 左开右开: 方法四 左开右闭: 3.Leetcode27 ...
- 【Day1】数组、704二分查找、27移除元素
[Day1]数组.704二分查找.27移除元素 数组 704 二分查找 版本一 左闭右闭 即[left, right] 版本二 左闭右开 即[left, right) 27 移除元素 暴力解法 双指针 ...
- cuda中的二分查找
使用背景 通常,在做高性能计算时,我们需要随机的连接某些点.这些点都具有自己的度量值,显然,度量值越大的值随机到的概率就会越大.因此,采用加权值得方法: void getdegreeSum(DG *g ...
- SGISTL源码探究-stl_alog.h中的二分查找算法
前言 在上一小节中我们分析了stl_algo.h中的部分算法.本小节中我们将继续分析其中关于二分查找类的算法,即lower_bound.upper_bound.binary_search.equal_ ...
- python实现二分查找_数据结构和算法:Python实现二分查找(Binary_search)
在一个列表当中我们可以进行线性查找也可以进行二分查找,即通过不同的方法找到我们想要的数字,线性查找即按照数字从列表里一个一个从左向右查找,找到之后程序停下.而二分查找的效率往往会比线性查找更高. 一. ...
- 详解【C语言】中的二分查找法和折半查找法(例题解答)
目录 问题 思路 详解 代码 问题 在一个有序数组中查找具体的某个数字n 比如我买了一双鞋,你好奇问我多少钱,我说不超过300元.你还是好奇,你想知道到底多少,我就让你猜,你会怎么猜? 答案:你每次猜 ...
- 第一天学习笔记之数组(冒泡排序+二分查找)
为了更深理解ArrayList实现原理,从今天开始学习算法和数据结构,更好的掌握底层原理. 在实际的项目工作过程中,数组已经很少用到,被各种封装的第三方类占据我们的程序中 但是要想写出优雅的代码,第三 ...
- C语言中的二分查找法
...cpp 二分查找法也称折半查找法,是一种有序的查找方法,时间复杂度为log以2为底n的对数.如果是无序的则要先进行排序操作.基本思想是:把要查找的值和中间元素比较.例如在1 2 3 4 5 6 ...
- python中的二分查找
一,定义 二分搜索是一种在有序数组中查找某一特定元素的搜索算法.搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束:如果某一特定元素大于或者小于中间元素,则在数组大于或小于中 ...
最新文章
- (建议收藏)产品经理要懂的SaaS知识,一文打包给你
- 【C++教程】03.第一个程序解析
- docker 根据标签删除镜像_10 个 Docker 镜像安全最佳实践
- LoRaWAN开放式实验平台
- android 振动传感器,Android光线传感器
- LeetCode:2. 两数相加(中等)
- MySQL的binlog
- nagios服务配置
- Springboot整合SpringSecurity--对静态文件进行权限管理
- VS2010安装教程
- 研究称在家中工作可提高员工工作效率
- excel2007不显示文件名
- matlab幻方置乱,幻方置乱,magic scrambling,音标,读音,翻译,英文例句,英语词典
- Invalid bound statement (not found) 五种解决方法
- 华文行楷字帖欣赏_毛笔行书欣赏,华文行楷在线转换,偏旁部首练字帖,
- 微信小程序退出功能(退回到微信)
- 基于Android的校园跳蚤市场(二手)的设计与实现(新版)
- Java中map的含义
- 对于爱情的透彻性理解:恋爱变成一场无间道...
- Android Makefile 及Android.mk 整理