用c語言實現折半查詢,c語言折半查詢法

時間 2021-12-19 14:27:26

1樓:藍高朋天睿

#include

intbinary_search(int

*data,int

len,int

target)

return

-1;}

intmain()

;int

i=binary_search(a,10,5);

if(i==-1)

printf("not

foun!\n");

else

printf("foun

%dat

%d\n",a[i],i);

return0;}

2樓:匿名使用者

int binary_search(int * data,int len,int target)

return b;

呼叫示例:

#include

int binary_search(int * data,int len,int target)

return b;

}int main(void)

;printf("%d\n%d\n",binary_search(a,7,9),binary_search(a,7,15));

return 0;

3樓:高金山

很基本的演算法,網上到處都是!

#include

int data[20]=;

int binary_search(int source,int left,int right,int key)

else if(key==source[middle])}return 0;

}void main()

else}

4樓:聽不清啊

#include

int find(int a,int x,int n,int m);int x,i;

printf("已有的數是:\n");

for(i=0;i<20;i++)

printf("%d ",a[i]);

printf("\n請輸入要查詢的數:");

scanf("%d",&x);

if((i=find(a,x,0,19))>=0)printf("%d是第%d個數\n",x,i+1);

else printf("未找到%d\n",x);

return 0;

c語言折半查詢法

5樓:風若遠去何人留

折半查詢法是演算法一種,可以被任何計算機語言使用。用c語言自然也可以實現。

1、定義:

在電腦科學中,折半搜尋(英語:half-interval search),也稱二分搜尋(英語:binary search)、對數搜尋(英語:

logarithmic search),是一種在有序陣列中查詢某一特定元素的搜尋演算法。

搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程結束;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜尋範圍縮小一半。

2、查詢規則:

折半查詢法是效率較高的一種查詢方法。假設有已經按照從小到大的順序排列好的五個整數a0~a4,要查詢的數是x,其基本思想是: 設查詢資料的範圍下限為l=0,上限為h=4,求中點m=(l+h)/2,用x與中點元素am比較,若x等於am,即找到,停止查詢;否則,若x大於am,替換下限l=m+1,到下半段繼續查詢;若x小於am,換上限h=m-1,到上半段繼續查詢;如此重複前面的過程直到找到或者l>h為止。

如果l>h,說明沒有此數,列印找不到資訊,程式結束。

int bin_search(int a,int n,int key)

}return -1;//未找到,返回-1.}

6樓:伊·梵

if (x=a[i]) /* 應該是x==a[i]吧 */用遞迴實現,程式會很好理解

int f(int a,int x, int start,int end)

修改如下:

#include

void main()

else if (x>a[i]) end = i-1;

else start=i+1; } }

7樓:

你的演算法有問題的,只有15個數你就模擬下計算機算下就知道。

另外找到x的時候你也沒有break退出迴圈。

8樓:匿名使用者

首先,應當宣告兩個變數來記錄這般查詢空間的範圍,這裡我們定義begin和end;其次判斷語句if(x=a[i])中x=a[i]是賦值語句,"=="是判斷相等運算子,應該為if(x == a[i]);最後,主函式為int型,應最後返回0表示執行成功,即在程式結尾家return 0;

以下是我在你**基礎上略加修改,已通過執行並成功。

#include

int main()

else

if (x>a[i])

end = i - 1;

else

begin = i + 1;

}return 0;}

9樓:

#include

#include

int cmp(const void * a,const void * b)

void main()

else if (x>a[i])

start = i+1;

else

end=i-1; } }

c語言中的折半查詢法是什麼

10樓:秀乞群群

折半查詢法也稱為二分查詢法,它充分利用了元素間的次序關係,採用分治策略,可在最壞的情況下用o(log n)完成搜尋任務。

例如排序後的資料是1 5 12 35 64 78 89 123 456

你要查詢12,首先用12跟上面排好順序的9個數中間那個比較(64),12<64,因此你查詢的資料在前半部分,即1 5 12 35 64,再用12跟前半部分中間那個數比較(12),這樣找了2次就找到了

折半查詢的目的是提高查詢的效率!

怎麼用c語言實現最玄乘法,怎麼用C語言實現最小二乘法

include define n 4 共有4個記錄,根據需要增加記錄typedef struct datadata 根據d中的n個data記錄,計算出線性方程的a,b兩值 double fi11 0,fi12 0,fi21 0,fi22 0,f1 0,f2 0 int i for i 0 i 最小二...

C語言折半查詢法,c語言的折半查詢法

if x a i 應該是x a i 吧 用遞迴實現,程式會很好理解 intf int a,int x,int start,int end 修改如下 include void main else if x a i end i 1 else start i 1 c語言的折半查詢法 你的陣列的索引為0 1...

c語言實現多執行緒,C語言怎樣實現多執行緒?

首先你要有控制蛇移動方向的全域性變數 定義在main以外因為執行緒函式也要呼叫它,每次鍵盤輸入都會修改它的值 比如 char direction a 左 w 右 d 上 s 下,然後你在移動時應該是在while裡面操作的吧,你每移動一步前都讀一下direction這個變數的數值然後再控制移動方向 注...

密碼強度問題C語言實現,C語言程式設計如何實現「計算圓的面積」?

提乙個思路吧。迴圈遍歷密碼,計算出密碼的長度long。同時可以統計出大寫字母的個數letters和小寫字母的個數letters。以及數字的個數number。統計這三個數字分別呼叫三個函式實現,每次傳進去的引數是當前讀到的字元。若匹配到,則標記變數加一。到這裡 密碼長度,密碼組成的分數都已經可以算出來...

C語言實現堆疊,求C語言程式例項,鍊錶實現堆疊的操作

include char a 1111 char sp a define push x sp x define pop sp define top sp 1 define empty sp a int main void printf 你輸入的內容是 n n sp 0 printf a return...