#include<stdlib.h>
#include<stdio.h>
#include<iostream>
using namespace std;
#define MAX_NUM 100
template<typename T>
/*#define SWAP(x,y) (x=x+y,y=x-y,x=x-y) //此处宏定义,由于两数相等的话,会产生y=0,所以宏定义写法不建议这样写,可以用第三个变量进行交换。*/
void selectionSort(T arr[],int n)
{
for(int i=0;i<n-1;i++)
{
int min=i;
for(int j=i+1;j<n;j++)
{
if(arr[j]<arr[min])
min=j;
}
swap(arr[i],arr[min]);
// SWAP(arr[i],arr[min]);
}
}
int main()
{
int arr[MAX_NUM],i,n;
cout<<"arr number of rand numbers before sort:";
cin>>n; //由于使用cin>>n>>endl;发生报错,一直没有找到错误,发现endl只能和cout配套使用,cin是C++标准输入流.
if(n<1||n>MAX_NUM)
{
fprintf(stderr,"Improper value of n\n");exit(1);
}
for(i=0;i<n;i++)
arr[i]=rand()%100;
for(i=0;i<n;i++)
cout<<arr[i]<<" ";
cout<<"\n";
cout<<"after sort number of numbers:\n";
selectionSort(arr,n);
for(i=0;i<n;i++)
cout<<arr[i]<<" ";
cout<<"\n ";
float arr2[MAX_NUM];
for(i=0;i<n;i++)
arr2[i]=(float)rand()/10;
cout<<"arr2 number of rand numbers before sort:\n";
for(i=0;i<n;i++)
cout<<arr2[i]<<" ";
cout<<"\n";
cout<<"after sort number of numbers:\n";
selectionSort(arr2,n);
for(i=0;i<n;i++)
cout<<arr2[i]<<" ";
cout<<"\n";
return 0;
}