选择排序:
核心思想:
每一轮在未排序区间里找到最小(最大)元素,和未排序区间第一个元素交换,逐步构建前面的有序区。也就是每一趟将待排序序列中的最小值找到,再将其和待排序序列的第一个值进行交换(换句话说就是相当于每一趟都把当前最小的值挪动到最前面)-》每一趟我们要找的是最小值的位置,而不是最小值是多少。
- 左边:已排序区间
- 右边:未排序区间
逻辑:
起初默认原始数据全部是未排序序列。






代码实现:
//选择排序
void Select_Sort(int arr[], int len) {
for (int i = 0;i < len-1;i++) {//控制趟数
int min =i;
for (int j = i + 1;j < len;j++) {//控制的是这一趟待排序序列值的遍历,从而找到待排序序列最小值的所在位置
if (arr[j] < arr[min]) {
min = j;
}
}
if (min!=i) {//判断待排序序列最小值和其第一个值是否是同一个值
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
}
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/2401_89246663/article/details/162789364




