標籤:
選擇排序也是比較簡單的一種排序方法,原理也比較容易理解,它與冒泡排序的比較次數相同,但選擇排序的交換次數少於冒泡排序。冒泡排序是在每次比較之後,若比較的兩個元素順序與待排序次序相反,則要進行交換,而選擇排序在每次遍曆過程中只記錄下來最小的一個元素的下標,待全部比較結束之後,將最小的元素與未排序的那部分序列的最前面一個元素交換,這樣就降低了交換的次數,提高了排序效率。
看一下實現代碼:
public class ChoiceSort {public static void _choiceSort(Integer[] a) {if (a == null || a.length <= 0) {return;}for (int i = 0; i < a.length-1; i++) {//這裡為什麼-1?思考一下int min = i; /* 將當前下標定義為最小值下標 */for (int j = i + 1; j < a.length; j++) {if (a[min] > a[j]) { /* 如果有小於當前最小值的關鍵字 */min = j; /* 將此關鍵字的下標賦值給min */}}if (i != min) {/* 若min不等於i,說明找到最小值,交換 */int tmp = a[min];a[min] = a[i];a[i] = tmp;}}}}
編寫測試方法:
public static void main(String[] args) { Integer[] list={49,38,65,97,76,13,27,14,10}; //選擇排序 ChoiceSort._choiceSort(list); for(int i=0;i<list.length;i++){ System.out.print(list[i]+" "); } System.out.println(); }
輸出結果:
10 13 14 27 38 49 65 76 97
喜歡的朋友關注我!多謝支援!
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Java實現演算法之--選擇排序