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

来源:互联网 发布:java ping ip 端口 编辑:程序博客网 时间:2024/06/06 01:05

原题:

题目描述

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

输入

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

输出

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

示例输入

35 1 2 3 4 54 5 3 7 12 2 1

示例输出

041

 

分析:

小转弯————首先要掌握冒泡排序,然后在每次排序后记一次数就OK!

源码:

#include<stdio.h>int main(){    int a[105];    int n,k,temp,p;    scanf("%d",&p);    while(p--)    {        k=0;        scanf("%d",&n);        for(int i=0; i<n; i++)        {            scanf("%d",&a[i]);        }        for(int j=0; j<n-1; j++)        {            for (int i=0; i<n-1-j; i++)                if (a[i]>a[i+1])                {                    temp=a[i];                    a[i]=a[i+1];                    a[i+1]=temp;                    k++;                }        }        printf("%d\n",k);    }}


 

原创粉丝点击