}//定義最大的斐波拉契數列
final int max = 100;
//用來儲存斐波拉契數列
int a = new int[100];
//初始化斐波拉奇書數列
public void fib()
}//查詢資料
int binarysearch(int arr, int key)
}// system.out.println(a[7]+" "+pos);
//使用臨時陣列大小跟斐波拉奇數列的那個數字相同
int temp = new int[a[pos]];
//初始化temp陣列使得前面資料相同
for (int i = 0; i < arr.length; i++)
//超過陣列長度使用最後的數字填充
for (int i = arr.length; i < a[pos]; i++)
int lo = 0;
int high = temp.length - 1;
int mid = 0;
//pos需要大於0保證資料不會溢位
while (lo <= high && pos >= 2) else if (temp[mid] < key) else if (temp[mid] == key)
//找到分兩種情況,一種是跟最後的資料相同返回最後的資料位置即可,一種是返回找到的位置
if (mid < arr.length - 1)
return mid;
else
return arr.length - 1;
}return -1;}}
迭代二分查詢二分查詢
在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...
c 實現二分查詢
二分查詢又稱折半查詢,對排好序的陣列,每次取這個數和陣列中間的數進行比較,複雜度是 o logn 如 設陣列為 a n 查詢的數x,如果x a n 2 則返回 n 2 如果 x a n 2 則在 a 0 到a n 2 1 中進行查詢 如果x a n 2 則在a n 2 1 到a n 1 中進行查詢 ...
二分查詢法實現
查詢分為靜態查詢和動態查詢 靜態查詢主要包括順序查詢和二分查詢 折半查詢 順序查詢是我們常用的一種查詢方式,它有順序表的順序查詢和鍊錶的順序查詢,這兩部分在前面學習線性表時都有學習。二分查詢是一種針對有序表進行的查詢,其效率高,比較次數少。動態查詢是指可以對錶進行刪除和插入操作。主要以二叉排序樹為主...