1. 在有序数组中,查找某个数是否在数组中存在? 使用二分法最经典。算法复杂度为(logN).
public static boolean exist(int[] sortedArr, int num){if(sortedArr == null || sortedArr.length == 0){return false;}int L = 0;int R = sortedArr.length - 1;int mid = 0; // 中间位置while(L<R){mid = L + ((R-L) >> 1);      //mid = (L + R)/2;  L+R可能会造成数据溢出if(sortedArr[mid] == num){return true;}else if(num < sortedArr[mid] ){R = mid -1;}else{L = mid + 1;}}return sortedArr[L] == num;}
  1. 在一个有序数组中,找到 >= 某个数最左侧的位置。
// 找到 >= value最左边的位置public static int nearLeft(int[] arr, int value){int L= 0;int R = arr.length - 1;int index = -1;while(L<=R){int mid = L + ((R-L) >> 1);if(arr[mid] >= value){index = mid;R = mid -1;}else{L = mid + 1;}}return index;}
  1. 找到 <= value最右侧的位置
public static int nearRight(int[] arr, int value){int L= 0;int R = arr.length - 1;int index = -1;while(L<=R){int mid = L + ((R-L) >> 1);if(arr[mid] > value){R = mid -1;}else{index = mid;L = mid + 1;}}return index;}
  1. 找到局部最小值
public static int getLessIndex(int[] arr){if(arr == null || arr.length == 0){return -1;}// 考虑最最左边是否局部最小if(arr.length == 1 ||  arr[0]<arr[1]){return 0;}// 考虑最最右边是否局部最小if(arr[arr.length-1] < arr[arr.length-2]){return arr.length - 1;}int left = 1;int right = arr.length - 2;int mid = 0;while(left < right){mid = (left + right)/2;if(arr[mid] > arr[mid-1]){right = mid -1;}else if(arr[mid]>arr[mid+1]){left = mid + 1;}else{return mid;}}return left;}

数据结构与算法:二分法相关推荐

  1. 数据结构与算法:22 精选练习50

    精选练习50 马上就要期末考试或者考研了.为了大家复习的方便,我精选了有关数据结构与算法的50道选择题,大家可以抽空练习一下.公众号后台回复"答案"可以获取该50道题目的答案. 0 ...

  2. 基础面试题 — 数据结构与算法

    数据结构 数据结构是对实际问题中的数据元素及相互间的联系的抽象.一般用线性表来表示常用数据结构,线性表分为顺序存储的顺序表和连式存储的链表. 常用数据结构 在学习算法之前,必须要了解一些常用数据结构的 ...

  3. 数据结构与算法:算法简介

    数据结构与算法:算法简介 雪柯 大工生物信息 提笔为写给奋进之人 已关注 你说呢 . shenwei356 等 70 人赞同了该文章 引用自算法图解,作者[美] Aditya Bhargava 译袁国 ...

  4. JavaScript数据结构和算法

    前言 在过去的几年中,得益于Node.js的兴起,JavaScript越来越广泛地用于服务器端编程.鉴于JavaScript语言已经走出了浏览器,程序员发现他们需要更多传统语言(比如C++和Java) ...

  5. 学习数据结构和算法前瞻

    我并非计算机科班出身,以前只对C.java.Matlab.Python语言有粗略的了解,以前写代码的时候只会考虑功能能实现就行了,并不考虑性能方面的问题,对数据结构与算法从未学习过,更不了解什么时间复 ...

  6. python程序结构有哪几种_Python数据结构与算法(几种排序)小结

    Python数据结构与算法(几种排序) 数据结构与算法(Python) 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺 ...

  7. 深入理解数据结构和算法

    hi,大家好,我是阿荣,今天分享一些对数据结构和算法精华总结,希望对大家的面试或者工作有一定的帮助: 看完本文可以学到什么 知道哪些数据结构和算法在实际工作中最常用,最重要 理解一些设计上注意事项(经 ...

  8. 数据结构与算法学习笔记之 从0编号的数组

    数据结构与算法学习笔记之 从0编号的数组 前言 数组看似简单,但掌握精髓的却没有多少:他既是编程语言中的数据类型,又是最基础的数据结构: 一个小问题: 为什么数据要从0开始编号,而不是 从1开始呢? ...

  9. JavaScript数据结构和算法 1

    前言 在过去的几年中,得益于Node.js的兴起,JavaScript越来越广泛地用于服务器端编程.鉴于JavaScript语言已经走出了浏览器,程序员发现他们需要更多传统语言(比如C++和Java) ...

  10. 数据结构与算法--二叉树第k个大的节点

    二叉树第k个大的节点 二叉树文章列表: 数据结构与算法–面试必问AVL树原理及实现 数据结构与算法–二叉树的深度问题 数据结构与算法–二叉堆(最大堆,最小堆)实现及原理 数据结构与算法–二叉查找树转顺 ...

最新文章

  1. [转载]python optionparser1
  2. Krona绘制物种或功能组成圈图
  3. bash . dot using
  4. java 微信自定义菜单开发_微信公众号开发之设置自定义菜单实例代码【java版】...
  5. 某pl/sql培训练习题
  6. 使用MySQL的23个注意事项
  7. 可做fft分析吗_小吃店生意好做吗,小吃业行情分析
  8. Java substring() 方法
  9. 网页中Flash播放器常用参数设置(转)
  10. mysql数据库最多列_mysql多列索引和最左前缀
  11. bash: ssh: command not found解决方法
  12. 简单的转盘抽奖html,一个很简单的H5的转盘抽奖的(主要用的是css3的属性)
  13. 华为7c手机怎么恢复出厂设置_华为荣耀畅玩7A/7C解锁教程_荣耀畅玩7A/7C用官方解锁码解锁方法...
  14. .nh文件转化为pdf,word
  15. Spring 学习笔记(day02)
  16. 利用python进行平行束FBP重建结果
  17. QQ群龙王快速获得代码以及方法
  18. PDF编辑管理工具Cisdem PDFMaster Mac
  19. Anaconda搭建TensorFlow2.x(win环境)
  20. cad图纸怎么看懂_cad学习技巧:如何快速看懂图纸?

热门文章

  1. grid - 使用相同的名称命名网格线和设置网格项目位置
  2. CSS3 flexbox 布局 ---- flex项目属性介绍
  3. 利用Docker设置Node.js
  4. 01.Python基础-3.集合容器
  5. xftp Initialize Flexnet Service failed / Error code: 50003
  6. 解决Java工程URL路径中含有中文的情况
  7. 洛谷 P1690 贪婪的Copy
  8. 利用浏览器LocalStorage缓存图片,视频文件
  9. linux内核之accept实现
  10. 汇编实验4.1文件代号下的文件管理中为什么buf_size为80而buf可以容纳200个字节,矛盾吗?(不矛盾)