java排序演算法(二)----選擇排序
阿新 • • 發佈:2018-12-16
選擇排序(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 時間複雜度分析
表現最穩定的排序演算法之一,因為無論什麼資料進去都是的時間複雜度,所以用到它的時候,資料規模越小越好。唯一的好處可能就是不佔用額外的記憶體空間了吧。理論上講,選擇排序可能也是平時排序一般人想到的最多的排序方法了吧。
選擇排序完成,其他排序演算法待續......