3 回答

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
為什么不充分利用二分搜索和線性搜索呢?使用二進(jìn)制搜索,獲得的指數(shù)的你的電話號(hào)碼的發(fā)生,然后線性搜索從那里后發(fā)現(xiàn)先發(fā)生:
int[] A = { 10, 20, 21, 24, 24, 24, 24, 24, 30, 40, 45 };
int key = 24;
int idx = Arrays.binarySearch(A, key);
while (idx > 0) {
if (A[idx - 1] != key)
break;
--idx;
}
if (idx < 0)
System.out.println("Key " + key + " not found");
else
System.out.println("First index of key " + key + " is " + idx);

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
double[] A = { 10, 20, 21, 24, 24, 24, 24, 24, 30, 40, 45 };
int key = 24;
int idx = -(Arrays.binarySearch(A, key - 0.5) + 1);
if (A[idx] != key)
? ? System.out.println("Key not exist!");
else
? ? System.out.println("First occurance of key is " + idx);
二分查找是查找數(shù)字的出現(xiàn),如果沒(méi)有找到則返回?cái)?shù)字的索引,如果數(shù)字將被添加到排序列表中。
添加回答
舉報(bào)