它的工作原理是每一次从无序组的数据元素中选出最小(或最大)的一个元素,存放在无序组的起始位置,无序组元素减少,有序组元素增加,直到全部待排序的数据元素排完。
#include<iostream>
#include<algorithm>
using namespace std;
void selectionSort(int arr[],int n){
for(int i =0;i < n;i++){
//寻找[i,n)区间里的最小值
int minIndex = i;
for(int j = i+1;j<n;j++){
if(arr[j] < arr[minIndex]){
minIndex=j;
}
//1.如果是c++ 11这个标准 这个函数在using namespace std;命名空间中
//2.如果是之前的在#include<algorithm>
//3.也可以自己交换
swap(arr[i],arr[minIndex]);
}
}
}
int main(){
int a[10]={10,9,8,7,6,5,4,3,2,1};
selectionSort(a,10);
for(int i = 0;i <10;i++){
cout << a[i] << " ";
}
cout << endl;
return 0;
}
将传入的数据声明成模板类型
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
template<typename T>
void selectionSort(T arr[],int n){
for(int i =0;i < n;i++){
//寻找[i,n)区间里的最小值
int minIndex = i;
for(int j = i+1;j<n;j++){
if(arr[j] < arr[minIndex]){
minIndex=j;
}
}
swap(arr[i],arr[minIndex]);
}
}
int main(){
int a[10]={10,9,8,7,6,5,4,3,2,1};
selectionSort(a,10);
for(int i = 0;i <10;i++){
cout << a[i] << " ";
}
cout << endl;
float b[4]={10.1,9.1,8.1,7.1};
selectionSort(b,4);
for(int i = 0;i <4;i++){
cout << b[i] << " ";
}
cout << endl;
string c[4]={"D","C","B","A"};
selectionSort(c,4);
for(int i = 0;i <4;i++){
cout << c[i] << " ";
}
cout << endl;
return 0;
}
输出结果