氣泡排序和選擇排序是排序演算法中比較簡單和容易實現的演算法,也是面試當中經常被考到的題目,所以是必須掌握的!
假設將陣列 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 選擇排序 每一趟從待排序的陣列元素中選出最小 或最大 的乙個元素,順序放在已拍好的數列的最後,直到全部待排序...