c語言 搜尋

2021-09-10 22:37:34 字數 807 閱讀 8168

舉個例子,在陣列中找是否有15這個數,以及位置

#includeint search(int key, int a, int len)

總共13個數

對應的下標依次為0,1,2,3,4,5,6,7,8,9,10,11,12

我們設幾個變數,left指我要搜尋的這個陣列的最左邊的下標,right指這個陣列的最右邊的下標  mid指數組中間的下標

mid=(left+right)/ 2    比如現在我們要找36這個數的位置

我們先求出a[mid]為21,因為21<36,所以我們捨去mid前面的那麼數,即將left=mid+1

這下就剩了一半,我們再次計算mid=(7+12)/2  這裡按9還是按10都是可以的,不影響結果

我們當成9來計算,a[9]=32 < 36 所以還是將left=mid+1 於是left移動到下標為10這裡

這下mid=(10+12)/2=11  此時a[11]=40 > 36 ,所以將right=mid-1  移動到和left一樣的位置

此時mid=(10+10)/2=10,a[10]=36 我們就找到了36

#includeint search(int k, int a, int len)

else if ( a[mid]>k)

else

} return ret;

}int main()

; int r = search(k, a ,sizeof(a)/sizeof(a[0]));

printf("%d\n",r);

return 0;

}

C語言 極大極小搜尋

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述 搜尋n層,第一層取最大值,先輸入兩個整數n randseed,用randseed設定隨機數種子。搜尋時每層4個分支,能不能想這個分支走用函式canmoveto 判斷,內容如下 int canmoveto int m,int d...

c 語言 二分搜尋

題目描述 在有序序列中查詢某一元素x。輸入首先輸入乙個正整數n n 100000 表示該序列有n個整數,然後按從小到大的順序輸入n個整數 接著是乙個正整數m,表示有m次查詢 最後是m個整數,表示m個要查詢的整數x。輸出對於每一次查詢,有一行輸出。若序列中存在要查詢的元素x,則輸出元素x在序列中的序號...

二叉搜尋樹(C語言)

學習二叉搜尋樹的過程中,對於刪除操作中的兩個節點都存在的情況進行 編寫時,出現了疑惑,所以我著重講解一下刪除操作 首先進行資料的宣告 include includetypedef int data type 宣告元素型別 typedef struct bst nodebst t,bst p 傳入根節...