思想:
每次从待排序的数据中选出最小的数,将其放在已排序的数据的后面
#include <iostream>
using namespace std;
/**
* @brief 选择排序算法。其时间复杂度为 (n-1)n/2次比较
* @param data[] 输入待排序的数据
* @param n 数组data的长度
*/
void selectSort(int data[],int n)
{
for(size_t i=0; i<n-1; i++)
{
size_t smallest_index = i;
for(size_t j=i+1; j<n; j++)
{
if(data[j] < data[smallest_index])
{
smallest_index = j;
}
}
if(smallest_index != i)
{
std::swap(data[i],data[smallest_index]);
}
}
}
int main()
{
int a[14] = {5,3,7,1,9,6,4,4,4,100,300,200,20,-10};
selectSort(a,14);
for(int i=0; i<14; i++)
{
std::cout<<a[i]<<" ";
}
std::cout<<std::endl;
return 0;
}