选择排序

选择排序

时间复杂度\(\mathrm{O}(n^2)\)

每次都对无序片段进行整趟扫描,取得最大或最小的那个元素,放到有序片段的前方或后方

算法思路如图所示


与冒泡排序相比就是少了很多交换元素的操作,选择排序每次只进行一次元素交换

代码

void selectSort(int *a, size_t size) {
	int min;
	for (int i = 0; i < size; ++i) {
		min = i;
		for (int j = i + 1; j < size; ++j) {
			if (a[j] < a[min])
				min = j;
		}
		if (i != min)
			swap(a[i], a[min]);
	}
}
posted @ 2019-04-08 14:14  start-from-ling  阅读(158)  评论(0)    收藏  举报