计算冒泡排序的交换次数:

逆序数概念:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序

一个排列中所有逆序个数总和叫做这个排列的逆序数。 所以冒泡排序结束即是所有的逆序数为0

思路

暴力:我们要计算逆序数,即使要统计出该值位置之前有多少个数比他大.我们用 arr[] 数组来表示序列值,则 Posx<Posy , 有Valuex>Valuey .那么可以得到 (O n2) 的方法

for(int Px = 1; Px<=n ; Px++){
    for(int Py = Px-1; Py>0;Py--){
    if(arr[Px]>arr[Py]) ans++;
    }
}
View Code

相关文章: