用c語言編寫順序查詢和二分查詢(折半查詢)

2022-02-07 18:25:47 字數 1551 閱讀 4310

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)

順序查詢,簡單我就不說了,乙個迴圈的事。

c語言二分法查詢,C語言二分法查詢

鷹弈 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 初...

c語言順序查詢程式,C語言順序查詢程式

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表...

二分查詢的pascal具體演算法簡單點求講解

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 ...