选择排序

直观且简单的一种排序,将未排序的头个元素与后面的比较,选择最小的放到最前。时间复杂度为O(n^2^),空间复杂度为O(1)。

例如:[4, 7, 2, 5] ——> 将4与后面的7, 2, 5比较——> 把最小的2与4的位置调换 ——> 将第二位的7与后面的数字比较 ——> 将7与后面数字中最小的4调换 …… 以此类推。

代码实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void selectionSort(int* nums, int numsSize) {
int i, j, min;
for(i = 0; i < numsSize - 1; ++i) {
min = i;
for(j = i + 1; j < numsSize; ++j) {
if(nums[j] < nums[min]) {
min = j;
}
}
int tmp = nums[min];
nums[min] = nums[i];
nums[i] = tmp;
}
}
题目链接:

判断能否形成等差数列

至少是其他数字两倍的最大数

寻找两个正序数组的中位数

颜色分类

题解:

4道题目均可以采用调用排序函数后对排序过的数组进行操作得出答案,由于较为简单,因此就不放题解了~

(绝对不是因为偷懒,绝对不是!)