c 有序陣列二分法及查詢資料階梯法

2021-09-29 08:14:52 字數 1109 閱讀 1122

對於有序陣列使用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...