计算冒泡排序的交换次数:
逆序数概念:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序
一个排列中所有逆序个数总和叫做这个排列的逆序数。 所以冒泡排序结束即是所有的逆序数为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++; } }