在乙個有序陣列中,查詢具體的某個數(二分查詢)

2021-10-23 17:48:53 字數 721 閱讀 2486

問題:

給定已排序好的n個元素arr[0:n-1],現在要在這n 個元素中找出一特定元素x

基本思想:**如下:

#define _crt_secure_no_warnings 1

#include

intsearch

(int x,

int arr,

int n)

return-1

;//未找到x

}int

main()

;printf

("請輸入你想查詢的數字: ");

scanf

("%d"

,&num)

;int sc =

sizeof

(arr)

/sizeof

(arr[0]

);//求陣列的長度(sizeof 計算位元組的大小)

int temp =

search

(num,arr,sc);if

(temp==-1

)printf

("已給陣列中找不到x\n");

else

printf

("已找到x 下標是:%d\n"

, temp)

;return0;

}

合併兩個有序數組成乙個有序陣列

題目 有兩個陣列a和b,將它們合併成陣列c,需要c也是有序陣列。有兩種實現思路 定義乙個新陣列,長度為兩個陣列長度之和,將兩個陣列都copy到新陣列,然後排序。給兩個陣列分別定義乙個下標,最大長度是陣列長度減一,按位迴圈比較兩個陣列,較小元素的放入新陣列,下標加一 注意,較大元素對應的下標不加一 直...

在旋轉有序陣列中查詢元素

1.題目 給定乙個旋轉的有序陣列,比如是旋轉之後得到的,在陣列中查詢是否存在元素key。要求時間複雜度為o lgn 假定陣列中不存在重複元素。2.分析 從上面的選擇陣列可以發現,array middle 將陣列分成兩段,兩段中必有一段是有序的。這樣就可以使用二分查詢了。乙個變形的二分查詢。3.1 i...

用二分查詢在乙個有序陣列中找數

有序陣列 a 二分查詢 首先在陣列中找到中間位置的陣列下標mid start end 2,將所要找的數x與mid進行比較 若x mid,則要找的數在後半部分,所以令start mid 1 若x重複以上步驟,直到找到x mid 實現如下 include include pragma warning d...