冒泡排序中数据交换的次数

Posted 小C解题

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序中数据交换的次数相关的知识,希望对你有一定的参考价值。


Problem Description

      听说过冒泡排序么?很好玩很暴力的一种排序方式,但对于小数据也是很实用的哦。今天我们不希望你用它来排序,而是希望你能算出从小到大冒泡排序的过程中一共进行了多少次数据交换。

Input

输入数据的第一行为一个正整数 T ,表示有 T 组测试数据。
接下来T行,每行第一个整数N, 然后有N个整数,无序。0<N<100

Output

输出共 T 行。
每行一个整数,代表本行数据从小到大冒泡排序所进行的交换次数。

Example Input

3
5 1 2 3 4 5
4 5 3 7 1
2 2 1

Example Output

0
4
1


PS:


#include <stdio.h>
#define h 100
int main()
{
    int i, j, a[h], n1, n2, t;
    scanf("%d", &n1);
    while(n1--)
    {
        int count = 0;
        scanf("%d", &n2);
        for(i = 0; i < n2; i++)
        {
            scanf("%d", &a[i]);
        }
        for(i = 0; i < n2; i++)
        {
            for (j = 0; j < n2 - i - 1; j++)
            {
                if (a[j] > a[j + 1])
                {
                    t = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = t;
                    count++;
                }
            }
        }

        printf("%d\n", count);
    }
return 0;
}


以上是关于冒泡排序中数据交换的次数的主要内容,如果未能解决你的问题,请参考以下文章

排序算法系列1--简单排序(选择,冒泡,直接插入)

冒泡排序中的交换次数

冒泡排序不起作用

冒泡排序的交换次数 (树状数组)

冒泡排序的交换次数

冒泡排序