《程式設計之美》 二分查詢的實現

2021-08-16 19:50:14 字數 1623 閱讀 4974

找出乙個有序的字串陣列arr中值等於字串v的元素的序號,並返回其序號,否則返回-1;

private

static

intbinarysearch(string arr, string str)

return -1;

}public

static

void

main(string args) ;

system.out.println(binarysearch(s, "rad"));

}

找出乙個有序的字串陣列arr中值等於字串v的元素的序號,如果有多個元素滿足這個條件,請返回序號中最大的那個;

private

static

intbinarysearch(string arr, string str)

if (arr[r].equals(str)) return r;

else

if (arr[l].equals(str)) return l;

else

return -1;

}

找出乙個有序的字串陣列arr中值等於字串v的元素的序號,如果有多個元素滿足這個條件,請返回序號中最小的那個;

private

static

intbinarysearch(string arr, string str)

if (arr[l].equals(str)) return l;

else

if (arr[r].equals(str)) return r;

else

return -1;

}

找出乙個有序的字串陣列arr中最大的arr[i]小於v,並返回 i ,如不存在則返回-1;

private

static

intbinarysearch(string arr, string str)

if (arr[l].equals(str)) return l - 1;

else

if (arr[r].equals(str)) return l;

else

return l - 1;

}

找出乙個有序的字串陣列arr中最小的arr[i]大於v,並返回 i ,如不存在則返回-1;

private

static

intbinarysearch(string arr, string str)

if (arr[r].equals(str)) return r+1 == arr.length ? -1 : r+1;

else

if (arr[l].equals(str)) return r;

else

return r+1 == arr.length ? -1 : r+1;

}

程式設計之美 二分查詢

前三個問題不講,已經解決過了 可以參見 現在寫最後兩個 1.最大的i使得arr i 小於v,其實就是求等於v的下界的前乙個元素。2.最小的i使得arr i 大於v,其實就是求等於v的上界的後乙個元素。include include using namespace std int indexofmax...

程式設計之美 二分查詢演算法

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後...

二分查詢的實現

一 二分查詢演算法的實現原理 二分查詢可以解決已經排好序陣列的查詢問題 只要陣列中包含target 即要查詢的值 那麼通過不斷縮小包含target陣列的範圍,最終就可以找到它。其演算法流程如下 對於包含n個元素的表,整個查詢過程大約要經過log 2 n次比較。二 二分查詢演算法的應用 二分查詢在資料...