摘要:直接選擇排序屬於選擇排序的一種,但是它的排序演算法比冒泡排序的速度要快一些,由於它的演算法比較簡單,所以也比較適合初學者學習掌握。 適宜人群:有一定Java SE基礎,明白Java的數據類型,數組的定義、初始化以及常用數組的方法,還有Java的迴圈操作。 前期準備:最好有一個開發工具比如說:ecl ...
摘要:直接選擇排序屬於選擇排序的一種,但是它的排序演算法比冒泡排序的速度要快一些,由於它的演算法比較簡單,所以也比較適合初學者學習掌握。
-
適宜人群:有一定Java SE基礎,明白Java的數據類型,數組的定義、初始化以及常用數組的方法,還有Java的迴圈操作。
-
前期準備:最好有一個開發工具比如說:eclipse或者myeclipse都可以,當然你使用DOS系統進行編譯運行都可以,只不過改bug會麻煩一點。
- 排序原理:直接選擇排序的原理是將指定排序位置與其他數組元分別對比,如果滿足條件就交換位置的值,註意這裡區別冒泡排序,不是交換相鄰元素,而是將滿足條件的的元素與指定的排序位置交換。
- 對比冒泡排序:和冒泡排序相比,直接選擇排序的交換次數要少很多,所以速度會快一點。
- 直接排序的優缺點:運算速度比冒泡排序快,但是由於在直接選擇排序中存在著不相鄰元素之間的互換,因此,直接選擇排序是一種不穩定的排序方法。
- 演算法實現:
1 package liuenci.cn.package_3; 2 3 public class SelectSort { 4 5 /** 6 * 直接選擇排序 7 */ 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 //創建一個亂序的數組 11 int[] array={2,55,62,44,25,16}; 12 //創建直接排序的對象 13 SelectSort sorter=new SelectSort(); 14 //調用直接選擇演算法對數組排序 15 sorter.sort(array); 16 } 17 public void sort(int[] array){ 18 int index; 19 for(int i=1;i<array.length;i++){ 20 index=0; 21 for(int j=1;j<=array.length-i;j++){ 22 if(array[j]>array[index]){ 23 index=j; 24 } 25 //交換在位置array.length-i和index(最大值)上的兩個數 26 int temp=array[array.length-i]; 27 array[array.length-i]=array[index]; 28 array[index]=temp; 29 } 30 31 } 32 showArray(array); 33 } 34 public void showArray(int[] array) { 35 // TODO Auto-generated method stub 36 for(int i=0;i<array.length;i++){ 37 int num=array[i]; 38 System.out.print(num+" "); 39 } 40 System.out.println(); 41 } 42 43 }