问题标题: 酷町堂:4220

0
0
已解决
周明轩
周明轩
资深光能
资深光能

4220   整理队伍(求交换次数)经验值:0

题目描述 Description

n(n<=100)个人无序地排成一队,为了让队伍看起来美观,要求这n个人从低到高重新站队。整理队伍的过程是这样的:

先确定第一个位置上的人,将第一个位置与后面所有位置依次比较,如果当前第一个位置的人比后面的人个子高,就让他俩交换位置;

再确定第二个位置上的人,将第二个位置与后面所有位置依次比较,如果当前第二个位置的人比后面的人个子高,就让他俩交换位置;

……

最后确定倒数第二位(第n-1个位置),如果倒数第二位的人比最后一位的人个子高,就让他俩交换位置。

问最后排好队一共交换了多少次位置?

输入描述 Input Description

第一行,一个正整数n
第二行,n个正整数,表示排队的人的身高

输出描述 Output Description

交换的次数

样例输入 Sample Input

5 150 140 160 130 170

样例输出 Sample Output

4

数据范围及提示 Data Size & Hint

确定第一个位置时 :150和140交换,140和130交换
确定第二个位置时 :150和140交换
确定第二个位置时 :160和150交换
总共交换了4次

怎么做


0
已采纳
宣海宁
宣海宁
中级光能
中级光能

选择排序

for(int i=1;i<n;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            if(a[i]>a[j])
            {
                swap(a[i],a[j]);
                cnt++;
            }
        }
    }

懂?

0
我要回答