二分查找的迭代实现
来源:互联网 发布:淘宝联盟还要人脸认证 编辑:程序博客网 时间:2024/05/18 12:39
【某互联网公司的笔试题一】
请实现以下函数int indexOf(int[] array,int target),给定一个循环有序的数组,请在这个数组中找到指定元素,找到的话返回下标,没有找到返回-1。
该数组的贴点是一个单调递增的数组向右循环移位形成的。例如,[4,8,13,20,23,34,41,52]经过向右循环移位有可能形成[23,34,41,52,4,8,13,20]。
public class SearchIndex {public static int indexOf(int[] array,int target){int len = array.length;int offset = 1;//数组偏移量for(int i = 0;array[i]<array[i+1];i++){offset = offset + 1;}int m;int left = 0;int right = len;while(left<right){m = left + (right-left)/2;if(array[m>=offset?m-offset:m+offset] == target){return m>=offset?m-offset:m+offset;}else if(array[m>=offset?m-offset:m+offset] > target){right = m;}else {left = m+1;}}return -1;}public static void main(String[] args) {int[] arr = {23,34,41,52,4,8,13,20};int index = indexOf(arr,34);System.out.println(index);}}
0 0
- 二分查找的迭代实现
- 二分查找的递归实现和迭代实现
- 二分查找的递归与迭代实现
- 二分查找(折半搜索)的迭代实现
- java实现二分查找(迭代)
- java实现二分查找(迭代与递归)
- 迭代和递归分别实现二分查找
- 折半查找的迭代实现
- 二分查找递归,迭代写法
- 二叉树排序(二分查找)[迭代]
- 二分查找(迭代和递归)
- 二分查找(递归和普通迭代)
- 二分搜索算法(折半查找)原理以及递归(recuition),迭代(iteration)的两种实现源代码
- 二分搜索算法(折半查找)原理以及递归(recuition),迭代(iteration)的两种实现源代码
- java cpp py 实现 二分查找,如果没查找到,显示离代查找值最近的值
- 二分查找的实现
- 二分查找的实现
- 二分查找的实现
- netfilter/iptables详解
- ccCArray.cpp 文件
- sort list--LeetCode
- web服务器被配置为不列出此目录的内容——Internet信息服务管理器(IIS)
- android--日期时间控件(十二)
- 二分查找的迭代实现
- ACdream 1415 Important Roads(最短路&缩点&找桥)
- hbase集群安装和shell操作
- UI中常用的控件ImageView\Button
- 第六届蓝桥杯:黄金连分数
- Activity的四种启动模式
- Palindrome Number
- 权限对目录的重要性
- Win7系统自带的无线网络共享WIFI