在一个升序的但是经过循环移动的数组中查找指定元素
2014-07-10 16:06
232 查看
数组是升序的,数组经过循环移动之后,肯定是有左半部分或者有半部分还是升序的。
代码:
结果:
8
代码:
public class SearchRotateArray { public static int search(int a[], int l, int u, int x) { while(l<=u){ int m = (l+u)/2; if(x==a[m]){ return m; }else if(a[l]<=a[m]){ //左半部分升序排列 if(x>a[m]){ l=m+1; }else if(x>=a[l]){ u=m-1; }else{// x<a[l] l=m+1; } }else if(a[l]>a[m]){ //右半部分升序 if(x>a[u]){ u=m-1; }else if(x>=a[m]){ l=m+1; }else{ //x<a[m] u=m-1; } } } return -1; } public static void main(String[] args){ int a[] = {15,16 ,19, 20, 25, 1, 3, 4, 5, 7, 10, 14}; System.out.println(search(a, 0, a.length - 1, 5)); } }
结果:
8
相关文章推荐
- 【小米校招笔试】一个数组是由有序数组经过n次循环移动后所得,请你用最快速度查找某个元素位置
- 将一个具有n个元素的数组向左循环移动i个位置,使用O(n)复杂度
- merge两个有序数组 & 查找一个有序数组中指定元素
- 利用二分查找在循环递增数组中检索一个元素
- KT学算法(二)——循环有序数组查找指定元素
- 完美算法 --将一个具有n个元素的数组向左循环移动i个位置
- 一个有n个整数的递增有序数组。对它进行向左或向右循环移动若干次后,要求给出一个代码实现,尽可能快地从这个数组中寻找指定值所在的位置
- 如何把JavaScript数组中指定的一个元素移动到第一位
- 给定一个经过一次旋转的有序数组,从中查找一个值,若存在返回它的索引,不存在返回-1,假定数组存在重复元素
- 定义一个一维数组,其元素个数从键盘中输入,元素的值为[100,200]的随机整数。 (1)输出数组的每个数 (2)对数组的数进行升序排序,输出排序后的数组元素 (3)从键盘上输入一个整数,查找该整数是
- 但是,在通过移动数组的上升周期中找到指定元素
- 利用二分查找在循环递增数组中检索一个元素
- indexOf() 如何判断一个元素在指定数组中是否存在? 找出指定元素出现的所有位置? indexOf()方法 是正序查找,lastIndexOf()是倒叙查找
- 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
- 【php数组函数序列】之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
- 第14 题: 题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 将数组中指定数量的元素移动数组后面
- 题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 第1题 在排序数组中查找和为某个指定数的两个元素之和
- 一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好等于输入的那个数字