选择排序可分为简单选择排序和堆排序。
#include
#include
using namespace std;
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
void SelectSort(int A[], int n) {
for(int i = 0;i < n-1;i++) { // 必须要进行n-1趟
int min = i; // 记录最小元素的位置
for(int j = i+1;j < n;j++) {
if(A[j] < A[min]) {
min = j; // 更新最小元素位置
}
}
if(min != i) {
swap(A[i], A[min]);
}
}
}
void PrintArray(int A[], int n) {
for(int i = 0;i < n;i++) {
cout << A[i] << " ";
}
cout << endl;
}
int main() {
int A[] = {1,8,9,7,6,5,4,3,2};
cout << "排序前:";
PrintArray(A, 9);
SelectSort(A, 9);
cout << "排序后:";
PrintArray(A, 9);
}
注:以上图片来自B站王道数据结构截图