matlab實現對有序陣列的二分查詢

2021-09-24 17:46:24 字數 894 閱讀 1976

%二分查詢法

%設計思想;對於乙個有序的列表或陣列,對二分查詢的方式進行元素查詢

function [result_index] = binary_search(array,element)

%array 有序陣列

%element 查詢元素

%result_index 輸出下標

low = 1; %設定陣列下標

high = length(array);%設定陣列上標

%進行二分查詢

%使用選擇多分支語句

while low <= high %設定查詢終止條件

mid = fix((low + high)/2); %得到整數值

if array(mid) == element %如果陣列對應位置元素相等

result_index = mid;

return ; %跳出迴圈返回

endif array(mid) < element %如果陣列對應元素小於,則需要改變下標值

low = mid + 1;

else %如果陣列對應元素大於,則需要改變上標值

high = mid - 1;

endif low > high %如果陣列對應元素上下標大小對換,預設輸出方式

result_index = nan;

return ;

endend

end

注意:1.分請指令碼檔案和函式檔案,二則不能放在一起執行。

2.matlab陣列下標是從1開始。

3.3/2不能自動取整,需用fix()函式左取整

4.拼寫錯誤導致輸出變數沒有賦值

如何對有序陣列進行無序排列

int i new int 定義你一開始的陣列 random ab new random 定義乙個隨機數物件 int u ab.next 0,i.length 生成乙個0到陣列個數的隨機數 arraylist ii new arraylist i 把陣列複製到arraylist ii中,便於刪除。i...

有序陣列的合併

includeusing namespace std define size 1024 1 如果可以申請輔助空間,那麼從前從後倒是沒什麼所謂吧,這就像是歸併的一次歸併了。void merge 1 int arr,int lenarr,int brr,int lenbrr while low1 len...

有序陣列的插入

習題1.9 有序陣列的插入 20 分 本題要求將任一給定元素插入從大到小排好序的陣列中合適的位置,以保持結果依然有序。函式介面定義 bool insert list l,elementtype x 其中list結構定義如下 typedef int position typedef struct ln...