java選擇排序,氣泡排序分析,附帶二分法查詢

2021-06-22 00:05:56 字數 1881 閱讀 1598

氣泡排序和選擇排序是排序演算法中比較簡單和容易實現的演算法,也是面試當中經常被考到的題目,所以是必須掌握的!

假設將陣列 int arr = ; 公升序排列

選擇排序的思想是:從左到右依次遍歷,每次遍歷確定乙個位置,所有遍歷的元素都和這個位置上的數比較

如上陣列,首先10 和 7比較,10比7大,交換位置,這時 7是陣列的第乙個 ,然後用 7 和 11 比較,7 比 11小,不交換, 然後,7 和 3 比較, 7 比 3 大,交換位置,3是陣列的第乙個,然後 3 和 比較 ,3 比 2 大,交換位置,2是陣列第乙個 ,然後 2 和 9 比較 ,2 比 9 大,不交換 ,此時 外層 第乙個遍歷完成,2排在了陣列的第一位,此時的陣列是 ,然後再從第二個元素遍歷,10 和 11比較,不換位置,10和7比較 ,換位置,7和 3比較,還位置,3和9比較 換位置,此時的陣列是      ,這樣一次類推下去,最後形成陣列 ;

/*

* 選擇排序

*/@test

public void selectsort() ;

for (int i = 0; i < arr.length - 1; i++)

}} for (int i = 0; i < arr.length; i++)

}

和上面一樣 假設將陣列 int arr = ; 公升序排列

氣泡排序的思想是:每次迴圈排序中,通過相鄰元素的比較交換將最大值移動到右側;意思就是 ,元素1和元素2比較,然後元素2和元素3比較,再元素3和元素4比較。。。

如上陣列,首先外層第一次迴圈後 內層迴圈 先比較 10 和 7 ,10 比 7大,交換位置,然後此時10 和 11比較,10比 11 小,不交換,然後 11 和 3比較 ,交換位置,然後 11和 2 比較,交換位置,然後 11 和 9比較 ,交換位置,外層第一次迴圈後,陣列形式是,然後外層第二次迴圈,7和 10比較,7比10小,不交換,然後,10和 3 比較,交換位置,然後 10和 2比較,交換位置,然後 10和9 比較,交換位置,此時,因為最後乙個元素已經確定為最大數,所以不用比較,因此第二層外層迴圈結束後,陣列形式是:,一次類推,結果是: ;

/**

* 氣泡排序

*/@test

public void bubblesort() ;

for (int i = 0; i < arr.length - 1; i++)

}} for (int i = 0; i < arr.length; i++)

}

public class dichotomy  ;

// 欲查詢的數字

int num = 34;

// 輸出num在nums中的索引

system.out.println("二分法檢視陣列中某數的索引為:" + dichotomy(nums, num));

} /**

* 二分法查詢

* * @param nums

* 陣列

* @param num

* 查詢的數

* @return 返回num索引,如果不存在返回-1

*/public static int dichotomy(int nums, int num)

// 如果值在center右邊或左邊,重新定位start或end,重新計算center值

if (num > nums[center])

if (num < nums[center])

center = (start + end) / 2;

}} return -1;

}}



java 氣泡排序和選擇排序的分析

兩種排序方式 現在介紹兩種著名的排序方式 1,氣泡排序 相鄰元素進行比較,較大的往右邊移動 結果就是每一次排序,最大的都會移動到右邊。最後結果就是公升序的序列。如 3,4,2,6,7 第一輪 1,3 4 不變 3,4,2,6,7 2,4 2 交換位置 3,2,4,6,7 3,4 6 不變 3,2,4...

Java 氣泡排序和選擇排序

b 氣泡排序 b 氣泡排序比較好理解,但是效率比較低,氣泡排序的基本思想是 每一次將最具有特徵的乙個數 或者object 放到序列的最前面,或者最後面。例如,如果需要將一組數,以從小到大的順序排列,那麼就可以設計這樣的冒泡方法 可以設計從序列的最後面開始,找出序列中最小的乙個數放到序列的最前面,這樣...

冒泡 選擇 快速排序演算法(附java實現原始碼)

氣泡排序 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。具有穩定性,時間複雜度為o n 2 不及堆排序,快速排序o nlogn,底數為2 public class buddlesort 選擇排序 每一趟從待排序的陣列元素中選出最小 或最大 的乙個元素,順序放在已拍好的數列的最後,直到全部待排序...