【題目描述】
Find any position of a target number in a sorted array. Return -1 if target does not exist.
在一個排序數(shù)組中找一個數(shù)泪电,返回該數(shù)出現(xiàn)的任意位置留荔,如果不存在挡篓,返回-1
【題目鏈接】
www.lintcode.com/en/problem/classical-binary-search/
【題目解析】
題目是求目標(biāo)值在數(shù)組中的位置〕鸩危考查Binary Search基本的實(shí)現(xiàn)寫法。
標(biāo)準(zhǔn)的Binary Search的實(shí)現(xiàn)過程一般按下面步驟:
檢查數(shù)列合理性是否為null或者為空
初始化Binary Search所需的首尾index索引變量start和end婆殿。start = 0诈乒, end = 數(shù)組長度 – 1。
通過一個條件為start + 1 < end的while循環(huán)來不斷二分減小搜索區(qū)間婆芦,設(shè)置中間索引變量mid = start + (end – start) / 2怕磨。如果數(shù)列在mid索引位置的值不等于搜索的目標(biāo)值,則繼續(xù)循環(huán)消约。每次循環(huán)中需要更新mid索引的值肠鲫。直到搜索的區(qū)間只剩下相鄰兩個數(shù)。
while循環(huán)過后只剩下相鄰兩個數(shù)或粮。和目標(biāo)值比較导饲。如果仍舊沒有找到,則返回-1。
【參考答案】