作業三 兩種方法判斷乙個有序陣列是否存在x

2021-10-03 21:27:16 字數 1076 閱讀 4574

兩種檢索演算法:在乙個排好序的陣列t[1…n]中查詢x,如果x在t中,輸出x在

t的下標j;如果x不在t中,輸出j=0。

方法1:直接遍歷查詢,因為可能存在多個值為x的數在陣列中,所有預先開乙個j陣列接收下表,最後組個輸出j;

方法2:折半查詢發 折半查詢到下標後,輸出該點,另寫兩個函式checkleft和checkright檢查該點左右值是否與該點相同,若相同輸出並遞迴。

void fink()

if (!exsist) printf(「j = 0」);

void binary()

checkleft(t,mid);

checkright(t,mid);

演算法複雜度:

遍歷查詢:時間複雜度:o(n) 空間複雜度:o(1)

折半查詢:時間複雜度:o(log n) 空間複雜度:o(1)

#include

#include

#define max 100

void

findk

(int t,

int x)}if

(!exisit)

printf

("j = 0\n");

}void

checkleft

(int t,

int a)

}void

checkright

(int t,

int a)

}void

binarysearch

(int t[10]

,int x)

else

if(x > t[mid]

) left = mid +1;

else right = mid -1;

}if(exsist)

else

printf

("j = 0");

}int

main()

findk

(t,6);

printf

("\n");

binarysearch

(t,6);

}

靜態有序陣列的查詢兩種方法

首先把需要查詢的集合放到乙個陣列裡。然後針對指定的元素在陣列裡進行查詢,下面主要介紹兩種方法 我們把需要儲存的資料記錄在如圖所示的結構裡 用乙個結構指向乙個陣列,其中結構的第一項指向陣列,第二項記錄陣列中資料的個數 之後的順序查詢函式裡主要要介紹一種哨兵的方法 如果不用哨兵,那麼查詢函式應該為 如果...

Python 合併有序陣列兩種方法

陣列是程式語言的通用稱呼,在python裡,列表就是我們常說的陣列 以下列表 陣列 目錄 1 用指標合併兩個有序陣列 兩個都是有序的 2 用sort函式合併兩個有序陣列 先看下面兩個陣列 arr1 1 3 4 6 10 arr2 2 5 8 11 先了解下思路,我們運用的方法是將某乙個陣列加入到另乙...

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

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