/*此段代码用于在不排序的情况下,找出一组数中的最大数和最小数。 并且交换最大数和最后一位数,交换最小数与第一位数。 此时不能直接排序,因为排序后,原数据的排列顺序已经改变,*/ #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; } }
时间: 2024-10-14 12:36:40