算法:
把未排序的部分的最小值找出插入到已排序的后边,内层遍历完一次就找到一个最小的,外层控制插入到已排序的后面。
#include<stdlib.h>
#include<string>
#include<math.h>
#include<iostream>
using namespace std;
template<typename T , int size>
void sort ( T (&array)[size] )
{
int i ,j;
T flag;
for (i = 0 ;i < size - 1; i++)
{
flag = array[i]; //暂时将第一个元素当做最小的
for (j = i + 1; j < size; j++)
{
if (flag > array[j])
{
array[i] = array[j];
array[j] = flag;
flag = array[i]; //更换最小值
}
}
}
}
int main()
{
int array1[10] = {1,5,9,3,7,4,6,2,8,10};
double array2[10] = {1.9,1.8,1.7,1.6,1.5,1.4,1.3,1.2,1.1,1.2};
sort (array1);
for (int i = 0; i < 10; i++)
{
cout<<array1[i]<<" ";
}
cout<<endl;
sort (array2);
for (int i = 0; i < 10; i++)
{
cout<<array2[i]<<" ";
}
// cout<<array1; 不是字符串不可以这么输出!
system("pause");
}
总结:
1.注意定义模板数组的引用方式:template<typename T , int size>
void sort ( T (&array)[size] )
2.有一个size大小,还有一个数组类型参数T,定义的时候当然也可以返回有参数的
类型!
3.只有字符串(字符数组)的输出才可以用cout<<array1;数值型int array [],只能循环输出!