選擇排序-java版


1.選擇排序

1.1 選擇排序的基本介紹

選擇排序類似於冒泡排序,均屬於內排,也可以看做是對冒泡排序的優化。因爲冒泡排序是比較相鄰的兩個值,然後直接交換。而選擇排序是找到一個最大值或者最小值之後,再進行交換。

1.2 選擇排序思想

第一次從 arr[0] ~ arr[n-1]中選擇一個最大值或者最小值,與 arr[0] 交換;第二次從 arr[1] ~ arr[n-1]中選擇一個最大值或者最小值,與 arr[1] 交換;
第二次從 arr[2] ~ arr[n-1]中選擇一個最大值或者最小值,與 arr[2] 交換;
依次類推。

1.3 選擇排序的時間複雜度和空間複雜度等

算法名稱 平均時間複雜度 最好情況 最壞情況 空間複雜度 穩定性
選擇排序 O(n^2) O(n) O(n^2) O(1) 穩定

2. 代碼演示

/**
 * @author shengjk1
 * @date 2020/3/30
 */
public class SelectSort {
	public static void main(String[] args) {
		int[] arr = {1, 10, 2, 30, -1};
		selectSort(arr);
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
	
	public static void selectSort(int[] arr) {
		for (int i = 0; i < arr.length - 1; i++) {
			int minIndex = i;
			for (int j = i + 1; j < arr.length; j++) {
				minIndex = arr[i] < arr[j] ? i : j;
			}
			if (minIndex != i) {
				int tem = arr[i];
				arr[i] = arr[minIndex];
				arr[minIndex] = tem;
			}
		}
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章