算法基礎之選擇排序
阿新 • • 發佈:2017-10-04
思維 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 }
算法基礎之選擇排序