码迷,mamicode.com
首页 > 其他好文 > 详细

数据交换

时间:2016-01-02 16:29:25      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

/*此段代码用于在不排序的情况下,找出一组数中的最大数和最小数。
   并且交换最大数和最后一位数,交换最小数与第一位数。
  此时不能直接排序,因为排序后,原数据的排列顺序已经改变,*/

#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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!