csp B4361

4 阅读1分钟

重点是两种不同排序之间,最少经过几次两两变换,一种变成另一种。 这个题目开始我用的冒泡排序,超时了,讨厌的冒泡排序!!!!!!! 冒泡排序每次交换相邻元素,恰好消除一个逆序对。 要把乱序的序列排成有序,需要消除所有逆序对。每次相邻交换只能消除一个逆序对,所以最少交换次数 = 逆序对总数。 for(int i=0;i<n;i++) { for(int j=i+1;j<n;j++) { if(a[j].num<a[i].num) count++; } }