前面的學習過程中學習了陣列的氣泡排序和二分查詢,那麼現在將它整理出來,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 ...