問題
寫出兩種檢索演算法:在乙個排好序的陣列t[1…n]中查詢x,如果x在t中,輸出x在t的下標j;如果x不在t中,輸出j=0.
解析順序查詢:在乙個線性表中,按照從前往後或者從後往前的順序依次查詢,如果查詢到關鍵字和給定值相等,則返回給定值的位置,查詢成功;如果查詢值最後乙個元素仍未找到,則查詢失敗。
對分查詢:首先將關鍵字與有序陣列內處於中間位置的元素進行比較,如果中間位置上的元素內的數值與查詢鍵不同,根據陣列元素的有序性,就可確定應該在陣列的前半部分還是後半部分繼續進行查詢;在新確定的範圍內,繼續按上述方法進行查詢,直到獲得最終結果。
設計順序查詢:
int s_search(int data,int length, int key)
}return -1;
}對分查詢:
int b_search(int arr,int len,int num)
else if(arr[middle] > num)else
}return -1;}分析
時間複雜度:
順序檢索:o(n)
二分檢索:o(logn)
原始碼
順序查詢和二分查詢
二分查詢 陣列裡查詢某個元素 search函式 其中 array為陣列,k為要找的值,low為查詢範圍的最小鍵值,high為查詢範圍的最大鍵值 function search array,k,low 0,high 0 if low high 如果還存在剩餘的陣列元素 elseif k array m...
順序查詢和二分查詢
1 順序查詢 又稱線性查詢,是從陣列的第乙個元素開始查詢,直到找到待查詢元素的位置。順序查詢適合於儲存結構為順序儲存或鏈結儲存的線性表。使用for迴圈等實現。int find int a,int x return index 2 二分查詢 二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能...
順序查詢和二分查詢
1.使用php描述順序查詢和二分查詢 也叫做折半查詢 演算法,順序查詢必須考慮效率,物件可以是乙個有序陣列 2.順序查詢 n為待查詢的陣列元素的個數,k為待查詢的元素 function seq sch array,n,k if i n 判斷是否到陣列的末尾 else array array 3,6,...