經典排序算法之選擇排序

來自《算法》中關於選擇排序的描述:首先找到數組中最小的元素,將它和數組的第一個元素交換位置。其次,在剩下的元素中找到最小的元素,將它與數組的第二個元素交換位置。如此往復,直到整個數組排序。這就是選擇排序。

話不多說,上代碼片段吧。

public static void selectionSort(int[] arr) {
		// 外層循環,每次循環都要確定當前索引的最值元素
		for (int i = 0; i < arr.length; i++) {
			// 最小值索引
			int index = i;
			// 內層循環獲取當前index後最小值
			for (int j = i + 1; j < arr.length; j++) {
				if (arr[j] < arr[index]) {
					index = j;
				}
			}
			// 交換當前i和index所對應的值
			int temp = arr[index];
			arr[index] = arr[i];
			arr[i] = temp;
		}
	}

選擇排序原理和實現很簡單,但它的缺點就是,即使原數組已經是有序的,程序也會象徵性的走一遍,這點非常糟糕。優點就是它僅需要N次交換即可實現排序。算法整體時間複雜度是O(n2)。

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