下面程序定义了一个函数模版对整型数组,单精度数组,双精度数组进行升序排序;
首先我们要明确什么是选择排序
选择排序(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;
}