資料結構與演算法 有序陣列和二分法查詢

2021-08-21 18:26:29 字數 1017 閱讀 7205

上次學習了陣列,不過陣列的賦值過程是無序的,是由輸入的數值決定的,如下所示:

//插入

在實際應用中,經常用到有序陣列。下面進行簡單介紹,相比無序陣列,就是在插入乙個值的時候,需要先從頭比較insertkey與陣列中元素的大小,如果insertkey大,繼續比較;如果出現arr[i]大的情況,則break,此時i即為插入的位置,i之後的元素全部後移一位。具體實現如下:

public void insert(int insertkey)

}//2.將陣列插入位置之後的元素後移一位

for (int j =cloum; j >i; j--)

arr[i]=insertkey;

cloum++;

}下面是測試類:

public static void main(string args)

結果顯示:

9  75  79  123  1999  2566  

9  75  79  99  123  1999  2566 

下面講講查詢演算法,查詢演算法有順序查詢和二分法查詢,所謂順序查詢,就是「傻瓜式」從頭到尾乙個乙個去找,如果運氣好的話,可能第乙個就找到了,如果運氣不好的話,直到找到最後乙個才找到。如果資料量大的話,此時二分法查詢就顯示出優勢了;

//使用二分法查詢

public int binarysearch(int searchkey)elseelse if(arr[index]測試類:

system.out.println(arr.binarysearch(99));

system.out.println(arr.binarysearch(98));

結果顯示:

9  75  79  123  1999  2566  

9  75  79  99  123  1999  2566  3-1

二分法查詢有序陣列

package array public class testbinarysearch 指定查詢的元素 int num 12 用二分法查詢,返回索引 int start 0 int end arr.length 1 end的設定應該為陣列最後一位 int index 1 用於標誌是否查詢到指定元素 ...

查詢有序陣列元素 二分法

查詢的方法多種多樣,今天提到的就是對於乙個有序陣列而言最方便最高效率的方法 二分法,也叫折半查詢。具體 如下 二分法,也叫折半查詢 include include intb search int a,int left,int right,int k else if a mid k else retu...

有序陣列中二分法查詢

二分法查詢適用於資料量較大時,但是資料需要先排好順序。首先,從陣列的中間元素開始搜尋,如果該元素正好是目標元素,則搜尋過程結束,否則執行下一步。如果目標元素大於 小於中間元素,則在陣列大於 小於中間元素的那一半區域查詢,然後重複步驟1的操作。如果某一步陣列為空,則表示找不到目標元素。時間複雜度為 o...