二分查詢法的例項分析

2021-07-12 04:44:12 字數 1278 閱讀 5741

二分查詢:折半查詢,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置 記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

優點:比較次數少,查詢速度快,平均效能好

缺點:要求待查表為有序表,且插入刪除困難

時間複雜度:o(log n)

二分查詢分析:

(1)左閉右閉式

(2)左閉右開式

二分查詢實現:

binarysearch.h:

#pragma once

#include //左閉右閉式

int binarysearch(int *array, int x,size_t size)

else if (x > array[mid])

else

}return -1;   //返回 -1 表示沒有找到

}//左閉右開式

int binarysearch(int *array, int x, size_t size)

else if (x > array[mid])

else

}return -1;   //返回 -1 表示沒有找到

}

我在這裡直接返回了找著到的數值,而沒有返回其在陣列中的下標,沒有找到責返回 -1

test.cpp:

#define _crt_secure_no_warnings 1

#include #include #include "binarysearch.h"

int main()

; int ret = 0;

int size = 0;

ret = binarysearch(num,25,sizeof(num)/sizeof(num[0]));

if (ret 

else    //找到的直接返回其數值

system("pause");

return 0;

}

存在不足還望多多指教!

本文出自 「clown」 部落格,請務必保留此出處

二分查詢法 折半查詢法 分析示例

眾所周知二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。下面我們直接上原始碼分析注釋 package com.aozhi.test public class binarysearch else ...

二分查詢法

二分查詢要求 1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。優缺點 折半查詢法的優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。演算法思想 首先,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者...

二分查詢法

有序陣列中的find 方法 public int find long serchkey int lowerbound 0 int upperbound nelems 1 while true curin lowerbound upperbound 2 if a curin serchkey retu...