本文實例講述了java排序高級之選擇排序實現方法。分享給大家供大家參考。具體如下:
選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
選擇排序的主要優點與數據移動有關。如果某個元素位於正確的最終位置上,則它不會被移動。選擇排序每次交換一對元素,它們當中至少有一個將被移到其最終位置上,因此對n個元素的表進行排序總共進行至多n-1次交換。在所有的完全依靠交換去移動元素的排序方法中,選擇排序屬於非常好的一種。
最差時間複雜度О(n²)
最優時間複雜度О(n²)
平均時間複雜度О(n²)
最差空間複雜度О(n) total, O(1) auxiliary
代碼實現:
package com.baobaotao.test; /** * 排序研究* */ public class Sort { /** * 選擇排序* @param array 數組*/ public static void selectSort(int[] array) { int length = array.length ; int index = 0 ; for(int i=0;i<length-1;i++) { index = i ; for(int j=i+1;j<length;j++) { if(array[j] < array [index]) { index = j ; } } swap(array, i, index) ; printArr(array) ; } } /** * 按從小到大的順序交換數組* @param a 傳入的數組* @param b 傳入的要交換的數b * @param c 傳入的要交換的數c */ public static void swap(int[] a, int b, int c) { if(b == c) return ; int temp = a[b] ; a[b] = a[c] ; a[c] = temp ; } /** * 打印數組* @param array */ public static void printArr(int[] array) { for( int c : array) { System.out.print(c + " "); } System.out.println(); } public static void main(String[] args) { int[] number={11,95,45 ,15,78,84,51,24,12} ; selectSort(number) ; } }
輸出:
11 95 45 15 78 84 51 24 1211 12 45 15 78 84 51 24 9511 12 15 45 78 84 51 24 9511 12 15 24 78 84 51 45 9511 12 15 24 45 84 51 78 9511 12 15 24 45 51 84 78 9511 12 15 24 45 51 78 84 9511 12 15 24 45 51 78 84 95
希望本文所述對大家的java程序設計有所幫助。