1. 程式人生 > >Java數組排序算法之直接選擇排序

Java數組排序算法之直接選擇排序

col select div 算法 ray stat http 條件 new

1.基本思想

直接選擇排序的基本思想是將指定排序位置與其他數組元素分別對比,如果滿足條件就交換元素值,註意這裏區別冒泡排序,不是交換相鄰元素,而是把滿足條件的元素與指定的排序位置交換。

與冒泡排序相比,直接選擇排序的交換次數要少很多,因此速度更快些。

2.算法示例

每一趟從待排序的數組元素中選出最小(或最大)的一個元素,順序的放在已排好序的數組元素前或後,直到全部待排序的數據元素排完。

例如有一個6個元素的數組【63 4 24 1 3 15】,排序大致過程如下所述:

第1輪排序:63和15交換位置:【15 4 24 1 3】63

第2輪排序:3和24交換位置:【15 4 3 1】24 63

第3輪排序:15和1交換位置:【1 4 3】15 24 63

第4輪排序:3和4交換位置:【1 3】4 15 24 63

第5輪排序:將3交換到元素‘4‘前面:【1】3 4 15 24 63

3.算法實現

public class SelectSort {
    public static void main(String[] args) {
        int array[] = {63, 4, 24, 1, 3, 15};
        SelectSort sorter = new SelectSort();
        sorter.sort(array);
    }

    
public void sort(int array[]) { int index; for (int i = 1; i < array.length; i++) { index = 0; for (int j = 1; j <= array.length - i; j++) { if (array[j] > array[index]) { index = j; } }
// 交換在位置array.lenth-i和index(最大值)上的兩個數 int temp = array[array.length - i]; array[array.length - i] = array[index]; array[index] = temp; } showArray(array); } public void showArray(int array[]) { for (int i : array) { System.out.print(" >" + i); } System.out.println(); } }

輸出結果如下圖所示:

技術分享圖片

Java數組排序算法之直接選擇排序