1. 程式人生 > 其它 >java經典演算法 - 選擇排序

java經典演算法 - 選擇排序

技術標籤:排序演算法演算法資料結構java排序演算法

目錄

一、前言

二、演算法描述

三、動圖演示

四、程式碼實現

五、總結


一、前言

選擇排序是一種簡單直觀的排序演算法。它的工作原理:首先在未排序序列中找到最小元素(本文以增序為例),存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

二、演算法描述

n個記錄的直接選擇排序可經過n-1趟直接選擇排序得到有序結果。具體演算法描述如下:

1、第1趟排序開始時:有序區為空,無序區為arr[0,n-1];

2、第i趟排序(i=2,3…n-1)開始時,有序區為arr[0,i-2],無序區為arr[i-1,n-1]。該趟排序從當前無序區中選出關鍵字最小的記錄 arr[k],將它與無序區的第1個記錄arr[i-1]交換,使arr[0,i-1]和arr[i,n-1]分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區;

3、n-1趟結束,陣列有序化了。

三、動圖演示

選擇排序

四、程式碼實現

public void selectionSort(int[] arr) {
    int len = arr.length;
    int minIndex;
    for (int i = 1; i < len; i++) {
        minIndex = i - 1;
        for (int j = i; j < len; j++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;
            }
        }
        int tmp = arr[i - 1];
        arr[i - 1] = arr[minIndex];
        arr[minIndex] = tmp;
    }
}

五、總結

時間複雜度:O(n^{2})

空間複雜度:O(1)

穩定性:不穩定

上一篇:《java經典演算法 - 氣泡排序》