选择排序(Selection Sort)是一种简单直观的排序算法。它的基本思想是:每一轮从待排序的数据中选择最小(或最大)的一个元素,然后与待排序数据的第一个元素交换位置。对剩余未排序的数据重复这个过程,直到所有数据排序完成。
选择排序的时间复杂度为O(n^2),其中n为待排序的数组长度。
选择排序的空间复杂度为O(1),只需要常数级别的辅助空间。
#include <iostream>
void selectionSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// 最小元素与当前元素交换
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
std::cout << "sort : " << i+1 << " :";
for(int k = 0; k < n-1; ++k)
{
std::cout << arr[k] << "\t";
}
std::cout << std::endl;
}
}
int main() {
int arr[] = {9, 1, 2, 5, 7, 4, 8, 6, 3, 5};
int n = sizeof(arr) / sizeof(arr[0]);
std::cout << "sort Before:" << std::endl;
selectionSort(arr, n);
std::cout << "sort End: \n";
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
结果:
不管脚步有多慢都不要紧,只要你在走,总会看到进步
。