选择排序:每⼀趟在待排序元素中选取关键字最⼩(或最⼤)的元素加⼊有序⼦序列
#include<iostream>
using namespace std;
//交换
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
//简单选择排序
void selectSort(int a[], int n) {
//n个元素的简单选择排 序需要 n-1 趟处理
for (int i = 0; i <= n - 1; i++) {
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 printArr(int a[], int len) {
for (int i = 0; i < len; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
int main() {
int arr[6] = {23, 54, 12, 4, 5, 6};
int len = sizeof(arr) / sizeof(int);
printArr(arr, len);
selectSort(arr, len);
printArr(arr, len);
}