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