Files
ClassFeedback/C++代码/CSP04/02-简单排序/选择排序.cpp

45 lines
639 B
C++

#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
int n;
int arr[100100];
void print(){
for(int i = 1; i <= n; i++){
cout << arr[i] << " ";
}
cout << endl;
}
void selectionSort(){
for(int i = 1; i <= n - 1; i++){ // i表示要交换的这个位置
int maxx = arr[i]; // minn是当前的最小值
int idx = i;
// 找到当前这一轮的最小值
for(int j = i + 1; j <= n; j++){
if(arr[j] > maxx) {
maxx = arr[j];
idx = j;
}
}
swap(arr[i], arr[idx]);
}
}
// 时间复杂度 O(n*n)
// 不稳定
int main(){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> arr[i];
}
selectionSort();
print();
return 0;
}