|
# include<iostream.h>
//这是一个排序函数并未进行数据位置交换,但却能正确的排序
template < int size,class T >
void show_in_order(T date[])//排序函数
{
T *pd[size];
int m;
for(m=0;m<size;m++)
pd[m]=&date[m];
for(m=0;m<size-1;m++)
{
int j=m;
for(int i=m+1;i<size;i++)
if(*pd[i]<*pd[j])
j=i;
cout<<*pd[j]<<' '; //(我测试的数据是[8,7,6,5]如果去掉下面这个语句if(j>m) pd[j]=pd[m];cout<<*pd[size-1];)
//问题1:我想这句话应该输出的为(5,5,5,5)但是输出为(5,5,5)为什么?
if(j>m) pd[j]=pd[m]; ////因为我测试的数据是[8,7,6,5]所以j>m总是成立,
//问题2:这句话if(j>m) pd[j]=pd[m];的是的作用主要体现在何处?
}
cout<<*pd[size-1];
}
void main()
{
int Date[]={8,7,6,5};
# define Size sizeof(Date)/sizeof(Date[0])
int m;
cout<<endl<<"排序前:";
for (m=0;m<Size;m++)
cout<<Date[m]<<' ';
cout<<endl<<"排序效果:";
show_in_order<Size>(Date);
cout<<endl<<"排序后:";
for(m=0;m<Size;m++)
cout<<Date[m]<<' ';
} |
|