#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 ");exit(1); } for(i=0;i<n;i++) arr[i]=rand()%100; for(i=0;i<n;i++) cout<<arr[i]<<" "; cout<<" "; cout<<"after sort number of numbers: "; selectionSort(arr,n); for(i=0;i<n;i++) cout<<arr[i]<<" "; cout<<" "; float arr2[MAX_NUM]; for(i=0;i<n;i++) arr2[i]=(float)rand()/10; cout<<"arr2 number of rand numbers before sort: "; for(i=0;i<n;i++) cout<<arr2[i]<<" "; cout<<" "; cout<<"after sort number of numbers: "; selectionSort(arr2,n); for(i=0;i<n;i++) cout<<arr2[i]<<" "; cout<<" "; return 0; }