C++ 实现选择排序算法
思路
选择排序
- 选择排序(升序) 就是 从一组数字 选出 一个最小的元素 放在 第一个位置
- 之后在 剩下 的 元素中, 在选择一个 最小 的 位置 放入 第二位置
- 最后只剩下 一个元素, 整个排序过程完成.
#include <iostream>
using namespace std;
void selectSort(int *arr, int len) {
for (int i = 0; i < len; i++) {
// 寻找[i, n)区间里的最小值
int minIndex = i;
for (int j = i + 1; j < len; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
swap(arr[i], arr[minIndex]);
}
}
}
void printArray(int *arr, int len) {
for (int i = 0; i < len; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
int main() {
int array[] = {1, 34, 6, 21, 98, 31, 7, 4, 36, 47, 67, 39, 45, 57, 37, 25, 2};
int len = sizeof(array) / sizeof(*array);
printArray(array, len);
selectSort(array, len);
printArray(array, len);
return 0;
}
结果如下: