簡單選擇排序實現(Java)


簡單選擇排序實現

簡單選擇排序就是通過n-i次關鍵字之間的比較,從n-i+1個記錄中選出關鍵字最小的記錄,並和第i (1 ≤ i ≤ n)個記錄交換。
代碼實現:

public class SelectSort {
	
	//置換
	public void swap(int[] elem, int i, int j) {
		int temp = elem[i];
		elem[i] = elem[j];
		elem[j] = temp;
	}
	
	//簡單選擇排序
	public void selectSort(int[] elem) {
		int min;
		for (int i = 1; i < elem.length; i++) {
			min = i;
			for (int j = i+1; j < elem.length; j++) {
				if(elem[min] > elem[j]) {
					min = j;
				}
			}
			
			if(min != i) {
				swap(elem, i, min);
			}
		}
	}
	
	public static void main(String[] args) {
		SelectSort s = new SelectSort();
		int[] elem = {0, 9, 1, 5, 8, 3, 7, 4, 6, 2};
		s.selectSort(elem);
		for (int i = 0; i < elem.length; i++) {
			System.out.print(elem[i] + ", ");
		}
	}
}

當i=時,elem[i]=9,min開始是1,然后與j=2到9比較elem[min]與elem[j]的大小。因為j=2最小,所以min=2,注意這里比較了8次,卻只交換數據操作一次

簡單選擇排序復雜度分析

簡單選擇排序的特點是交換移動數據次數相對較少,這樣節約了相應的時間,分析復雜度發現無論好壞情況,其比較次數是一樣多的,第i趟排序需要進行n-i次關鍵字比較,此時需要比較 n ( n 1 ) 2 \frac{n(n-1)}{2} 次。而對於交換次數來說,當最好的時候交換為0次,最差的時候交換為n-1次。所以總的時間復雜度依然為O( n 2 n^2 )
盡管與冒泡排序同為O( n 2 n^2 ),但簡單選擇排序的性能要略優於冒泡排序。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM