C語言查詢演算法 折半查詢 中的問題

2025-07-16 15:40:08 字數 2426 閱讀 7725

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