排序算髮之選擇排序

一、基本思想

每次從未排序的序列中挑選出最大(最小)的元素,重複這個過程直到所有元素都被挑完。

二、算法實現

// 選擇排序算法
void selectSort(int* arr, int len) {
	int min, minPos;
	for (int i = 0; i < len; i++) {
		min = arr[i];
		minPos = i;
		for (int j = i + 1; j < len; j++) {
			if (arr[j] < min) {
				min = arr[j];
				minPos = j;
			}
		}
		arr[minPos] = arr[i];
		arr[i] = min;
	}
}

三、算法分析

選擇排序算法時間複雜度爲O(n^2),空間複雜度爲O(1).

選擇排序是非常慢的,即使是在最好的情況下(如數組已經有序)都需要二次方時間,該算法重複的進行幾乎相同的工作,而不會從每次迭代中學習到什麼東西。



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