二分查詢(折半查詢)

2022-08-03 19:12:11 字數 1069 閱讀 7028

二分查詢條件:有序陣列。

查詢原理:查詢過程從陣列的中間元素開始,如果中間元素正好等於要查詢的元素,則搜尋過程結束;

如果某一特定元素大於或小於中間元素,則在陣列大於或小於中間原色的那一半中查詢,而且跟開始一樣從中間元素開始比較。

如果在某一步驟陣列為空,則代表找不到。

這種搜尋演算法每一次比較都使搜尋範圍縮小一半。

時間複雜度:o(logn)

使用二分查詢有兩個前提條件:

1,待查詢的列表必須有序。

2,必須使用線性表的順序儲存結構來儲存資料。

下面是實現**。

c#版:

namespace binarysearch.csharp

; console.writeline("********************二分查詢********************\n");

display(list);

int result = binarysearch(list, 40);

if (result != -1) console.writeline("40在列表中的位置是:", result);

else console.writeline("對不起,列表中不存在該元素!");

console.readkey();

}/// /// 二分查詢

///

/// 查詢表

/// 給定值

/// 給定值在列表中的位置

public static int binarysearch(listlist, int key)

else

}//沒有找到(查詢失敗)

return -1;

}private static void display(ilistlist)

", item);}}

console.writeline("\n**********展示完畢**********\n");}}

}

程式輸出結果如圖:

二分查詢(折半查詢)

二分查詢 折半查詢 從有序序列中找到給出的要查詢的數字。原理是 首先把乙個有序序列中間位置的值與要查詢的數比較,若相等則找到了有序序列中的此數 否則比較兩者的大小,若前者大,則把有序序列的中間位置以前的元素都去掉,餘下的元素組成乙個新的有序數列繼續上一步的操作,直到找到為止 若後者大,則把有序數列中...

折半查詢(二分查詢)

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

二分查詢(折半查詢)

時間限制 3000 ms 記憶體限制 65535 kb難度 3描述 在某一國度裡流行著一種遊戲。遊戲規則為 在一堆球中,每個球上都有乙個整數編號i 0 i 100000000 編號可重複,現在說乙個隨機整數k 0 k 100000100 判斷編號為k的球是否在這堆球中 存在為 yes 否則為 no ...