当前位置 : 主页 > 编程语言 > java >

如A[]={ 17 19 20 25 1 4 7 9},试在这样(下文)的数组中找一元素x,看看是否存在。

来源:互联网 收集:自由互联 发布时间:2022-07-20
import java.util.ArrayList; import java.util.List;//对已排好序的数组A,一般来说可用二分查找可以很快找到。现有一特殊数组A[],它是循环递增的,如A[]={ 17 19 20 25 1 4 7 9},试在这样的数组中找一
import java.util.ArrayList;
import java.util.List;//对已排好序的数组A,一般来说可用二分查找可以很快找到。现有一特殊数组A[],它是循环递增的,如A[]={ 17 19 20 25 1 4 7 9},试在这样的数组中找一元素x,看看是否存在。
public class Search {
public static void main(String args[]) {
int[] A = new int[] { 117, 119, 120, 125, 14, 15, 17, 19, 1, 2, 3, 7 };
List<Integer> list = new ArrayList<Integer>();
list.add(0); for (int i = 0; i < A.length - 1; i++)// 统计循环上升次数
{
if (A[i] > A[i + 1]) {
list.add(i);
}
}
list.add(A.length - 1);
int result = -1;
for (int i = 0; i < list.size() - 1; i++) {
System.out.println(list.get(i) + " " + list.get(i + 1));
result = search(A, 7, list.get(i), list.get(i + 1));
list.set(i + 1, list.get(i+1) + 1);
if (result != -1)
break; }
System.out.print(result);
}
private static int search(int[] l, int value, int start, int end)// 改成二分查找
{
for (int i = start; i <= end; i++) {
if (value == l[i])
return i;
}
return -1;
}}
网友评论