1. 程式人生 > >java排序演算法(二)----選擇排序

java排序演算法(二)----選擇排序

選擇排序(Selection Sort) 

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

1.1 演算法實現步驟:

1、取第一個未排序的值;

2、遍歷和第一個未排序的值比較;

3、若比第一個未排序的值小,對下標進行標記,記下標記;

4、用標記下標的值和後面待比較的值繼續比較;

5、最後被標記的值為最小值,和第一個未排序的值進行互換。

1.2 動圖展示:

      

1.3 程式碼實現

package com.demo.test;

import java.util.Arrays;

public class SelectionSort {
    public static void main (String[] args){
        SelectionSort.selectionSort();
    }
    public static int[] selectionSort(){
        int[] array1 = {1,3,7,2,9,5,8};
        int len = array1.length;
        for (int i = 0;i < len-1;i++){
            //定義變數min為最小值的下標,每一輪迴圈開始前,預設本輪比較第一個值為最小;
            int min = i;
            for (int j = i+1;j<len;j++ ){
                if (array1[min]>array1[j]){
                    //若下標j對應的值小於下標為min的元素值,將min更新為j;
                    min = j;
                }
            }
            if (min != i){
                int temp = array1[i];
                array1[i] = array1[min];
                array1[min] = temp;
            }
        }
        System.out.println(Arrays.toString(array1));
        return array1;
    }
}

1.4 時間複雜度分析

       表現最穩定的排序演算法之一,因為無論什麼資料進去都是O(n^{2})的時間複雜度,所以用到它的時候,資料規模越小越好。唯一的好處可能就是不佔用額外的記憶體空間了吧。理論上講,選擇排序可能也是平時排序一般人想到的最多的排序方法了吧。

選擇排序完成,其他排序演算法待續......