标签:
/*此段代码用于在不排序的情况下,找出一组数中的最大数和最小数。
并且交换最大数和最后一位数,交换最小数与第一位数。
此时不能直接排序,因为排序后,原数据的排列顺序已经改变,*/
#include <iostream>
using namespace std;
int main()
{
int n; ///表示有几组数。
cin>>n;
while(n--)
{
int m; ///表示每组数中有多少个数。
cin>>m;
int A[m];
int min=-99999999,max=99999999; ///假设两个数为参照,因为输入数据不会比min小,也不会比max大。
int maxID,minID;
for(int i=0; i<m; i++)
{
cin>>A[i];
/// 此时输入一个数比较一次,节约时间
if(A[i]>min)
{
min=A[i];
maxID=i; ///特别重要,用于记住最大数的下标,方便待会交换。
}
if(A[i]<max)
{
max=A[i];
minID=i; ///特别重要,用于记住最小数的下标,方便待会交换。
}
}
int t;
///交换的步骤可调用swap函数,此时不用加其他头文件。
t=A[minID]; ///交换最小数与第一个数。
A[minID]=A[0];
A[0]=t;
t=A[maxID]; ///交换最大数与最后一个数。
A[maxID]=A[m-1];
A[m-1]=t;
///顺序调换完之后输出。
for(int i=0; i<m; i++)
{
cout<<A[i]<<" ";
}
cout<<endl;
}
}
标签:
原文地址:http://www.cnblogs.com/-beyond/p/5094838.html