1樓:網友
#include
int main()
fflush(stdin); // 如果輸入的陣列元素多於10個,則廢棄。
scanf_s("%d",&x);
low = 0,high = n - 1;
while(low <= high)
else if(x < a[mid])
elseif(result != null)
elsereturn 0;}
c語言折半查詢法**出現問題了?
2樓:聽不清啊
這是由於前面在讀入數字時,遺留在鍵盤緩衝區中的回車符引起的。只要把第乙個圖中紅框中的語句修改為:
scanf("%c%c",&c,&c);
就可以了。這樣第乙個%c就讀掉了上次遺留下的「回車符」,第二個%c就讀到了y或n。
c語言折半查詢法
3樓:風若遠去何人留
折半查詢法是演算法一種,可以被任何計算機語言使用。用c語言自然也可以實現。
1、定義:在電腦科學中,折半搜尋(英語:half-interval search),也稱二分搜尋(英語:binary 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.}
4樓:伊·梵
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; }
5樓:網友
你的演算法有問題的,只有15個數你就模擬下計算機算下就知道。
另外找到x的時候你也沒有break退出迴圈。
6樓:網友
首先,應當宣告兩個變數來記錄這般查詢空間的範圍,這裡我們定義begin和end;其次判斷語句if(x=a[i])中x=a[i]是賦值語句,"=="是判斷相等運算子,應該為if(x == a[i]);最後,主函式為int型,應最後返回0表示執行成功,即在程式結尾家return 0;
以下是我在你**基礎上略加修改,已通過執行併成功。
#include
int main()
elseif (x>a[i])
end = i - 1;
elsebegin = i + 1;
return 0;}
c語言找錯:折半查詢法題目
7樓:上林人
是不是你**抄錯了?那個if(numbera[n-1])肯定有問題,應該是number >a[n-1]
c語言 用折半查詢演算法在給定的有序序列中查詢與給定值k相等的第乙個元素,輸出其所在位置及比較的次數
8樓:網友
#include
#include
int binfind(int a,int n,int num,int *times)
return -1;
int main()
int pos,i,num = 96;
int n = sizeof(a)/sizeof(a[0]);
int times = 0;//查詢次數。
pos = binfind(a,n,num,×)
printf("待查序列為:");
for(i = 0; i < n; +i) printf("%d ",a[i]);
printf("");
if(pos >= 0)
else printf("沒找到數值%d,對不起。",num);
return 0;}
C 折半查詢的基本思想和步驟,C 折半查詢法
折半查詢法是效率較高的一種查詢方法。基本思想是 設查詢資料的範圍下限為l 0,上限為h 4,求中點m l h 2,用x與中點元素am比較,若x等於am,即找到,停止查詢 否則,若x大於am,替換下限l m 1,到下半段繼續查詢 若x小於am,換上限h m 1,到上半段繼續查詢 如此重複前面的過程直到...
程式設計演算法問題 10,c語言演算法問題
典型的動態規劃揹包問題。2 動態規劃。你找一下揹包問題,到處都有詳細解答 跟這個問題類似 只要稍微改一下題目和 就行。改了之後思路如下 幫你換成c語言了 給分啊 有一個箱子容量為v 正整數,o v 20000 同時有n個物品 o n 30 每個物品有一個體積 正整數 要求從 n 個物品中,任取若千個...
c 連結串列關於查詢的問題,c 連結串列關於查詢的一個問題
很高興為樓主解答,如果滿意,請採納!首先樓主的宣告和定義不一致 宣告 定義 更正宣告部分為 e 更正完後呼叫 listsearch l l,3,30 因為呼叫的函式的第三個引數為引用,不能直接用變數或者常量30 下面是主函式修改部分 void main 修改後就能正常了 修改後的完整 也給你貼上 i...