舉個例子,在陣列中找是否有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 傳入根節...