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

京公网安备 11010502036488号