對於有序陣列使用2分法效率最好,因為不需要遍歷所有元素;對於無序陣列用排序後再用2分法則是最差的選擇,無序陣列只要遍歷一次即可找到,而排序則遍歷陣列大大大於一次.有序陣列使用2分法第一次即可跳過陣列的一半不需要遍歷因此效率大為提高,尤其對大陣列,體現更為明顯.
template void 查詢資料階梯法(t 陣列, int 序, int 查)
int _tmain(int argc, _tchar* ar**)
, bb = ,
cc = ,
序 = sizeof(aa) / sizeof(aa[0]), 查 = 序 + 1;
while (查--)查詢資料階梯法(cc, 序, 查);
clock_t 結束 = clock();
printf_s("耗時:%lf\n", (double)(結束 - 開始) / clocks_per_sec);
system("pause");
//system("cls");
goto 起始;
//return 0;
}
一般的有序查詢大都設計為公升序,這裡設計公升降序自動判斷,實現公升序降序都可以.
template void 有序陣列二分法(t 陣列, int 序, int 查)
else if (陣列[點] > 查)if (向)序 = 點 - 1; else 頭 = 點 + 1;
else if (陣列[點] < 查)if (向)頭 = 點 + 1; else 序 = 點 - 1;
} if (序 < 頭)cout << 查 << "無" << -1 << endl;
}
int aa = ,
bb = ,
cc = ,
序 = sizeof(aa) / sizeof(aa[0]), 查 = 序 + 1;
while (查--)有序陣列二分法(bb, 序 - 1, 查);
//有序陣列二分法(aa, 序 - 1, 12);
二分法查詢有序陣列
package array public class testbinarysearch 指定查詢的元素 int num 12 用二分法查詢,返回索引 int start 0 int end arr.length 1 end的設定應該為陣列最後一位 int index 1 用於標誌是否查詢到指定元素 ...
查詢有序陣列元素 二分法
查詢的方法多種多樣,今天提到的就是對於乙個有序陣列而言最方便最高效率的方法 二分法,也叫折半查詢。具體 如下 二分法,也叫折半查詢 include include intb search int a,int left,int right,int k else if a mid k else retu...
有序陣列中二分法查詢
二分法查詢適用於資料量較大時,但是資料需要先排好順序。首先,從陣列的中間元素開始搜尋,如果該元素正好是目標元素,則搜尋過程結束,否則執行下一步。如果目標元素大於 小於中間元素,則在陣列大於 小於中間元素的那一半區域查詢,然後重複步驟1的操作。如果某一步陣列為空,則表示找不到目標元素。時間複雜度為 o...