二分查詢:折半查詢,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置 記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。
優點:比較次數少,查詢速度快,平均效能好
缺點:要求待查表為有序表,且插入刪除困難
時間複雜度: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...