2019独角兽企业重金招聘Python工程师标准>>>

/**

* 功能:给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,次数不详。找出数组中的某个元素。

* 可以假定数组元素原先是按从小到大的顺序排列的。

*/

  1. /**
  2. * 思路:数组被旋转过了,则寻找拐点。
  3. * @param a
  4. * @param left
  5. * @param right
  6. * @param x:要搜索的元素
  7. * @return
  8. */
  9. public static int search(int[] a,int left,int right,int x){
  10. int mid=(left+right)/2;
  11. if(x==a[mid])//找到元素
  12. return mid;
  13. if(left>right)
  14. return -1;
  15. if(a[left]<a[mid]){//左半边为正常顺序
  16. if(x>=a[left]&&x<=a[mid]){
  17. return search(a,left,mid-1,x);//搜索左半边
  18. }else{
  19. return search(a, mid+1, right, x);//搜索右半边
  20. }
  21. }else if(a[mid]<a[right]){//右半边为正常顺序
  22. if(x>=a[left]&&x<=a[mid]){
  23. return search(a,left,mid-1,x);//搜索左半边
  24. }else{
  25. return search(a, mid+1, right, x);//搜索右半边
  26. }
  27. }else if(a[left]==a[mid]){//左半边是重复元素
  28. if(a[mid]!=a[right]){//若右边元素不同,则搜索右边
  29. return search(a, mid+1, right, x);//搜索右半边
  30. }else{//否则两边都搜索
  31. int result=search(a, left, mid=1, x);
  32. if(result==-1){
  33. return search(a, mid+1, right, x);
  34. }else
  35. return result;
  36. }
  37. }
  38. return -1;
  39. }

转载于:https://my.oschina.net/u/2822116/blog/792612

给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,找出数组中的某个元素...相关推荐

  1. 9.11排序与查找(三)——给定一个排序后的数组,包括n个整数,但这个数组已被旋转过多次,找出数组中的某个元素...

    /**  * 功能:给定一个排序后的数组.包括n个整数.但这个数组已被旋转过多次,次数不详.找出数组中的某个元素.  * 能够假定数组元素原先是按从小到大的顺序排列的.  */ /*** 思路:数组被 ...

  2. python步骤解析 给定一个整数数组和目标值_给定一个整数数组和一个目标值,找出数组中和为目标值的两个数 例如给定nums = [2,7,11,15],target = 9...

    python解决方案 nums = [1,2,3,4,5,6] #假如这是给定的数组 target = 9 #假如这是给定的目标值 num_list = [] #用来装结果的容器 def run(nu ...

  3. 给定一个排序好的数组,插入一个数,使其仍然有规律不使用排序算法

    给定一个排序好的数组,插入一个数,使其仍然有规律 不使用排序算法 public class test14 { //数组习题public static void main(String[] args) ...

  4. 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 请必须使用时间复杂度为 O(log n) 的算法. 使用暴力算法 解决思想: ...

  5. 给定一个含n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数。

    笔者初涉<算法设计与分析>这门专业课,在做一些算法设计题的过程中遇到一些小感悟,特此记录和大家分享. 下面直接给出算法题目: 给定一个含n(n≥1)个整数的数组,请设计一个在时间上尽可能高 ...

  6. 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

    给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3-&g ...

  7. 【408计算机考研】|【2018统考真题-41】| 给定一个含 n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数

    目录 一.题目 二.解答 三.测试数据 一.题目   给定一个含 n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算 法,找出数组中未出现的最小正整数.例如,数组{-5, 3, 2, 3}中未 ...

  8. 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], target ...

  9. Java第三大的数,Java通过排序找出数组第三大数字

    Java通过排序找出数组第三大数字 1 方式一:对数组进行排序并返回第三大数字 通过对数组进行排序并返回第三大数字,我们可以找到java中的第三大数字.让我们看看完整的示例,以找到java数组中的第三 ...

最新文章

  1. Windows7下安装VC2008绿色版
  2. Explain执行计划
  3. flutter text 左对齐_Flutter基础篇之九-Text文本展示
  4. 锤子Smartisan T1手机官方4.4.2系统内核版本号信息
  5. 集成电路设计软件Tanner 16.30安装教程(附安装包)
  6. VMware vSphere 4.1虚拟化学习手册6:Distributed vSwitch分布式交换机
  7. poj 2226 Muddy Fields 最小顶点覆盖
  8. 从numpy里加载_PyTorch强化:01.PyTorch 数据加载和处理
  9. 牛客网在线编程:公共字符
  10. linux vim与less区别,linux中cat、more、less命令区别详解##less 最合适最好用,和vim一样好用...
  11. 深度森林:探索深度神经网络以外的方法
  12. C语言 同构数的算法
  13. python实现单例模式的几种方法实例详解
  14. .Net Core学习笔记(二)MVC框架
  15. mui赋值_mui input用法
  16. 菜鸟教程中的面试题总结
  17. 估值近百亿,“创维三把手”酷开科技能否顺利赶考?
  18. 使用redis存储历史浏览记录
  19. 学习UI设计都需要会什么
  20. python ogr_Python+OGR库学习(三):将含有字段值的TXT文件写入shpfile

热门文章

  1. cdoj 1252 24点游戏 dfs
  2. 细节:js 对象继承的几种模式举例
  3. linux枯燥命令行下的“有趣命令”
  4. php中heredoc的使用方法
  5. [歌曲]死了都要try
  6. 再谈.NET Micro Framework移植
  7. SpringCloud 微服务网关Gateway 动态路由配置
  8. SpringCloud Ribbon负载均衡介绍及使用
  9. 寒假打工去,不能继续写博客,表示好心痛啊。。。
  10. File类的用法总结,及文件过滤器的介绍。