选择排序
时间复杂度\(\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]); }}