二分法遞迴搜尋的問題 新手 求助!!

2025-01-04 07:30:15 字數 3600 閱讀 5596

1樓:

1、key沒有初始化。

2、計算陣列長度寫得不正確。

3、else if(key

using namespace std;

int search(int int,int,int);

int main()

int key;

int word=

int left=0;

int right=sizeof(word)/sizeof(int)-1; /計算陣列長度寫得不正確。

int result;

key = 9;

result=search(word,left,right,key);

cout<<"要查詢的數的序號為:" resultelseint middle=(left+right)/2;

if (a[middle]==key)

return middle;

else if(keyright=middle-1;

return search(a,left,right,key);

elseleft=middle+1;

return search(a,left,right,key);

2樓:梅川娃兒

要改什麼呀?這程式寫得這麼明瞭,沒有錯吧,首先給你解釋一下吧,這個二分查詢是要先進行排序,具體排序演算法有很多種,自己掌握,這個二分查詢是對已經排好序的陣列進行查詢某個數,所以int word=這樣定義,這個程式很好解釋,很不錯的使用了遞迴查詢!

c++用遞迴寫個二分法查詢

3樓:網友

int bsearch(elemtype a,elemtype x,int low,int high)

在下屆為low,上界為high的陣列a中折半查詢資料元素x*/

4樓:厲紫易

遞迴法實現,建構函式。c++程式,試一下:

#include

using namespace std;

int search(int ,int,int,int);

int main()

int left=0;

int right=sizeof(word)/sizeof(int)-1; //計算陣列長度寫得不正確。

int result;

key = 9;

result=search(word,left,right,key);

cout<<"要查詢的數的序號為:"

用遞迴,二分法排序遇到的乙個奇怪問題,要抓狂了,跪求高手

5樓:網友

你的二分遞迴有問題啊,你想當i=2時,也就是start=1,end=2你的遞迴是不是引數不變的在呼叫,一直都是split(1,2,find)

用c語言寫:定義十個學生陣列結構體,用遞迴二分法查詢學生資訊

6樓:孤島彌音

我現寫的乙個,簡潔明瞭,應該是符合你的口味的,測試完全通過#include

#define n 100

typedef struct studentstu;

stu s[n];

int main()

return 0;}

spss中如何用多重分類法進行多選題的問卷錄入設計? 本人會使用多重二分法,所以請不要複製貼上多重

7樓:網友

建立10個變數,從a到j

如果有3個人分別選ab,abc,cdef這三個資料,錄入時,用1-10分別代表a-j,從第一變數開始錄入,選了哪個選項錄入相應的數字就行。

a b c d e f g h i j

8樓:抱抱勾

限選題比較適合多重分類法,比如這道題目要求限選3個選項。

需要這樣設定:

新建三個變數:一,二,三,每個都新增一樣的值標籤,即1=a,2=b,3=c...把選項全部貼上去)。

很重要的第二步就是點選分析,點選多重響應,點選定義變數集,然後把三個變數拖進集合中的變數,選中類別法,範圍為1到10(數字是指你給每個選項定義的值標籤),點選新增,確定,就好了。

資料輸入方法如下:

比如有人選了abc,那麼在資料示圖裡輸入資料就是,變數一:1變數二:2,變數三:3,然後其他變數不用輸入,自動會顯示缺失值。

多重二分法:

這樣設定:把每個選項當做乙個變數(即乙個單選題),即變數一(對應a選項) ,二 (對應b),三(c)..然後每個變數的值標籤都一樣,即1.是(表示選a)2.否(表示沒選a)。

第二步幾乎跟上面一樣,不同點在於選擇二分,計數值為1(就是你設定的選中的數字)。

如果有人選abc,那麼錄入資料就是:1112222222。

急求大神!要求為二分法查詢的非遞迴演算法設計主函式,完善演算法並執行驗證,**寫了一半不知怎麼繼續

9樓:網友

排序很簡單的……用qsort()好了。

void qsort(void* start, int element, int length, int (*cmp)(const void*,const void*))

使用時,start為起始位置,element是元素個數,size是元素長度(sizeof()即可),最關鍵的是最後乙個比較函式,這個需要你自己動手寫。

返回值int,傳參型別 const void*指標。

例如,給整數排序:

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

又如:按student結構體中的age從大到小排序。

int cmp(const void*stu1,const void*stu2)

10樓:網友

這**看起來太累啦,給你乙個建議吧。

1、二分查詢演算法在《資料結構》這本中有完整的描述和演算法實現,你可以去看看;

2、建議你的排序和查詢這兩個功能寫成函式,即結構清晰,又便於查詢錯誤。

c語言 二分法搜尋

11樓:漠影歌

你沒有理解遞迴的真正意思,你的這個程式只考慮了一層一層的進去,並沒有考慮出來的情況。

遞迴就類似於棧,先進後出,一層一層進去了之後,你獲得的值在出來的時候還會進行運算。

說的太抽象了,就以你的程式來舉例吧。

你二分法去找,如果當前中間的數不等於47,就讓相應位置挪動一下,沒錯,想法是對的,而且找到當middle = 2的時候 list[middle]==item ,然後location = middle = 2;這一層算是底層了,然後接下來問題就來了,你return 了這個location不代表程式結束了,return這個location是給你的上一層用的。先不管你的上一層其他資料是什麼,你在執行上一層的時候,又讓location等於了 -1,因為上一層不可能又有list[middle]==item,所以上上層也是-1,上上上層還是-1,最後你的返回值就是-1了。

解決的辦法是把int location=-1;當成全域性變數進行定義,別放到函式中就行了!

懂了麼?不懂的地方繼續追問!

二分法插入排序快速排序歸併排序堆排序的時間複雜度分別

二分法插入排序 複雜度 o nlogn 快速排序 o nlogn 有可能退化歸併排序 o nlogn 比較快 堆排序 o nlogn 最穩定的 排序演算法 所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。分類 在電腦科學所使用的排序演算法通常被分類為 計算的複...

請解釋什麼是古典二分法,請大神解釋一下,這是什麼意思呢?

古典二分法是古bai典經du濟學家把經濟分為兩個互zhi不相關部分的dao 研究方法。內 當時經濟學家認為容經濟分為實際經濟與貨幣,相應地經濟學分為經濟理論和貨幣理論。經濟理論研究實際經濟中產量的決定,即產量是由制度,資源,技術等實際因素決定的,與貨幣無關。貨幣理論說明物價水平的決定,即我們所公認的...

傳奇世界第二分身什麼才可以分法要什麼分

有分身的玩家,這時候就無法通過練丹來獲得元嬰了唯一的方法就是 買10元的靈皓石交給玄玄老人,一般給的都是第3種璇璣建議只投一次 因為4種元嬰加的屬性差別不是很大再就是分神了2 3 分神,就第二元神 必須條件 1.主體48級 分身46級 2.已經獲得元嬰 分神很簡單 達到條件之後 去找靈臺仙人 獲得任...