1. 程式人生 > >算法基礎之選擇排序

算法基礎之選擇排序

思維 arr 開始 最小值 import port 比較 election ati

  選擇排序是排序算法當中的入門算法,相信學過數據結構與算法的同學都是從這個排序開始的吧。大一接觸選擇排序算法的時候覺得好簡單(相比冒泡排序來說),因為它的實現方式比較接近於人的思維方式。顧名思義,選擇排序算法,起碼會有個“選擇”的過程吧?沒錯,選擇排序就是設定了兩個區域,一個為有序區,另一個則是無序區了。或者說是已排序區和等待排序區,都是一樣的。在選擇排序當中,每次循環都是在無序區當中選擇一個最小(或最大)的元素,跟當前的元素進行交換;如果無序區中沒有比當前元素小(或大)的值,那麽已經是無序區中最小值了,它的合適位置就是當前位置。

  比方說,有一個長度為4的數組a,{3,2,4,1}。那麽我們第一趟排序就是要確定第一個位置,也就是下標為0的位置,此時下標為0的位置是3,依次與後面元素比較,發現2比3小,那麽下標為0的元素和小標為1的元素交換位置,此時a[0]為2,繼續比較發現a[3]比a[1]小,那麽a[0]與a[3]交換位置,依次類推。

  

 1 package selectionSort;
 2 
 3 import java.util.Arrays;
 4 /*
 5  * 選擇排序
 6  * 本例子為升序
 7  */
 8 public class SelectSort {
 9     public static void selectSort(int[] array) {
10         
11 
12         for (int i = 0; i < array.length; i++) {
13             /*
14              * 每一趟排序都默認該位置為最小值,如果後面找到更小的,兩者交換位置
15 */ 16 for (int j = i + 1; j < array.length; j++) { 17 if (array[j] < array[i]) { 18 int tmp = array[i]; 19 array[i] = array[j]; 20 array[j] = tmp; 21 } 22 } 23 24 }
25 26 } 27 28 public static void main(String[] args) { 29 30 int[] arr = {2,1,7,3,5}; 31 System.out.println("排序前:" + Arrays.toString(arr)); 32 33 selectSort(arr); 34 System.out.println("排序後:" + Arrays.toString(arr)); 35 36 } 37 }

算法基礎之選擇排序