1樓:匿名使用者
順序查詢:在乙個已知無序佇列中找出與給定關鍵字相同的數的具體位置。原理是讓關鍵字與佇列中的數從第乙個開始逐個比較,直到找出與給定關鍵字相同的數為止。複雜度為o(n).
二分查詢又稱折半查詢,它是一種效率較高的查詢方法。
【二分查詢要求】:1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。
【優缺點】折半查詢法的優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。
【演算法思想】首先,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。
重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。
【演算法複雜度】假設其陣列長度為n,其演算法複雜度為o(log(n))
#include
//二分查詢:
int search(int a,int x,int n) //x為要查詢的元素,n為陣列長度
else if(x
else } return -1; } //順序查詢: int search1(int a,int x,int n) //x為要查詢的元素,n為陣列長度 return -1; }int main() 2樓: 老大,人家叫你答c語言啊,你的都不是c語言,暈,樓主,我覺得你出200分我就幫你解決,你的分太低了。。 3樓: /*順序查詢:*/ #include void main() ; int i,x,y; printf("輸入你要查詢的數:\n"); scanf("%d",&x); y=0; //標記是否已找到,y=1表是找到了,y=0表示沒找到for(i=0;i<10;i++) //迴圈,把x和陣列中的元素乙個個比較 } if(y==0)printf("無法找到你要查詢的數\n"); //y=0表示找不到 }/*二分查詢: 添個主函式呼叫下就好了*/int search(int a,int x,int n)else if(x
else } return -1;} 4樓:泠月冰辰 我這裡有。。。 typedef int elemtype; //二分法查詢 const elemtype* myfind(const elemtype* a,int n,const elemtype& e) return 0; }//遞迴描述二分法查詢 const elemtype* myfind_dg(const elemtype* front,const elemtype* rear,const elemtype& e) 順序查詢,簡單我就不說了,乙個迴圈的事。 鷹弈 include 不用math標頭檔案 void main hing和low賦初值 scanf d k while high low printf no return if語句去掉 我已經匿名了 include include void main scanf d k high 9,low 0 初... include void main int i,x,y printf 輸入你要查詢的數 n scanf d x y 0 標記是否已找到,y 1表是找到了,y 0表示沒找到 for i 0 i 10 i 迴圈,把x和陣列中的元素乙個個比較 if y 0 printf 無法找到你要查詢的數 n y 0表... vara array 1.10 of integer i,j,n,x integer begin writeln 輸入10個從小到大的數 for i 1 to 10 do read a i writeln 輸入要查詢的數 readln x i 1 n 10 j trunc i n 2 repeat ...c語言二分法查詢,C語言二分法查詢
c語言順序查詢程式,C語言順序查詢程式
二分查詢的pascal具體演算法簡單點求講解