下面程序定义了一个函数模版对整型数组,单精度数组,双精度数组进行升序排序;

首先我们要明确什么是选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。

代码如下:

#include<iostream>
#include<math.h>
#include<string.h>
#include<stdio.h>
#include <fstream>
using namespace std;
template <typename T,int size>
void sort(T(&array)[size])//数组排序模版
{
    for(int i=0;i<size;i++)//从第一个开始遍历数组size次,默认将第一个视为最小元素;
    {
        T min=array[i];//暂时将当前元素当作最小值
        int k=i;//记录当前地址
        for(int j=i+1;j<size;j++)//遍历未排序元素
        {
            if(array[j]<min)//如果未排序元素中有比当前值还小的
            {
                min=array[j];//更新最小值
                k=j;//更新最小值地址
            }
        }
        if(k!=i)//当一遍循环结束后如果最小元素不是当前值,将最小元素与当前值进行交换
        {
            array[k]=array[i];
            array[i]=min;

        }
    }
}
int main()
{
    int narray[5]={4,2,5,3,1};
    cout<<"整数排序前:"<<endl;
    for(int i=0;i<5;i++)
    {
        cout<<narray[i];
    }
    cout<<endl;
    sort(narray);
    cout<<"整数排序后:"<<endl;
    for(int i=0;i<5;i++)
    {
        cout<<narray[i];
    }
    cout<<endl;
    double barray[5]={1.1,1.3,1.5,1.4,1.2};
    cout<<"浮点数排序前:"<<endl;
    for(int i=0;i<5;i++)
    {
        cout<<barray[i]<<" ";
    }
    cout<<endl;
    cout<<"浮点数排序后:"<<endl;
    sort(barray);
    for(int i=0;i<5;i++)
    {
        cout<<barray[i]<<" ";
    }
    cout<<endl;
}