陣列的氣泡排序與二分查詢

2021-10-08 18:53:23 字數 1396 閱讀 8994

前面的學習過程中學習了陣列的氣泡排序和二分查詢,那麼現在將它整理出來,go!

氣泡排序的思想是按照一定順序如(左到右,下到上)所有相鄰兩個數依次比較,第一輪比較完成後,選出第一輪比較的最大值或最小值,然後排除這一輪的最大值或最小值,在進行第二次比較,依次下去,直到只有乙個數,無法比較,氣泡排序完成。

如在乙個陣列中int intarray= ;我們選擇最大,公升序。

第一次比較:

5和1比 5大 交換 1 5 9 7

5和9比 9大 不交換 1597

9和7比 9大 交換 1579

剔除這一輪確定最大值9

第二輪比較

1和5比 5大 不交換 1579

5和7比 7大 不交換 1579

剔除這一輪確定最大值7

第三輪比較

1和5比 5大 不交換 1579

剔除這一輪確定最大值5

只剩下1 不需要再比較

當陣列中存在n個數需要兩兩比較時,我們可以知道需要比較n-1輪,如上面這個例子4個數,只需要比較三輪;每比較完成一輪後便可剔除乙個數,所以第一輪比較不剔除數,第二輪比較剔除第一輪比較得到的乙個最大值,假設輪數i=0開始,每輪比較的次數就為n-1-i;

//氣泡排序

int[

] intarray=

;for

(int i=

0;i1;i++)}

}for

(int i=

0;i)

二分查詢的前提 :資料有序。

二分查詢思想:所謂二分查詢,其實就是獲取一組有序資料的中間資料,判斷其跟查詢關鍵字的大小,如果中間資料大於關鍵字,則去中間資料前半段去尋找,(如果中間資料小於關鍵字,則取則去中間資料後半段去尋找)重新定義尋找區間以及中間資料,繼續重複以上的操作,直到最後查詢區間不存在或者查詢到關鍵字的下標。

public

static

inthalfselect

(int

array,

int k)

if(k > array[array.length -1]

|| k < array[0]

)int min =0;

int max = array.length -1;

int middle =

(max + min)/2

;// 取中間值

while

(k != array[middle]

)else

if(k > array[middle]

)else

}return-1

;// 查詢不到返回 -1

}}

陣列的查詢與氣泡排序(二分查詢)

陣列的學習 1.陣列的查詢 如下 注釋可能寫的有點亂 package com.qiyu public class arraytest15 陣列的查詢 if y x m if y 把中間的下標左邊的全部拋棄,取得中間下標的左邊的陣列 得到的左邊的陣列最後乙個數下標的位置 return 1 public...

二分查詢與氣泡排序

二分查詢 二分查詢又稱折半查詢是應用於有序數列中找到目標數的演算法。二分查詢較有序查詢的優點是比較次數少,查詢速度快,效能穩定 時間複雜度為o lgn 現在寫出乙個在數列arr 中找到目標數k 8的過程。int binary search int arr,int k,int sz else if a...

氣泡排序 二分查詢

include include include using namespace std int bsearch int t,int n,int x 二分查詢 return null inline void swap int a,int b void init int t,int n for int ...