欢迎访问https://blog.csdn.net/lxt_Lucia~~
宇宙第一小仙女\(^o^)/~~萌量爆表求带飞=≡Σ((( つ^o^)つ~ dalao们点个关注呗~~
问题:
Description
在这个问题中,你需要分析一个对n个不同数排序的算法。该算法主要通过交换相邻数直到序列有序(升序)。比如:对输入序列
" 9 1 0 5 4 ",经过一系列交换后变成有序序列 " 0 1 4 5 9 ",你的任务是计算将序列变成有序最少需要经过多少次交换。
Input
输入包含多组测试数据。每组第一个是整数n<500,000,表示输入序列的长度,接下来是n行,每行有一个整数 a [ i ] ( 0 ≤ a [ i ] ≤ 999,999,999)。当n=0时表示结束。
Output
对每一组输入,输出该序列变成有序所需要交换的最少的次数。
Sample Input
5 9 1 0 5 4 3 1 2 3 0
Sample Output
6 0
解决方法
方法1:
思路:
1)根据待排序列,写出其逆序列。
2)根据逆序列中的每一项所代表的数j和逆序个数aj,将待排序列中对应的数j向左邻交换aj次。
3)交换完成后,序列就排序完成。此时,交换的次数就是最少的次数,也是原序列的逆序数。
举个栗

这篇博客探讨了如何计算一个序列的逆序对数量,并通过两种方法解决排序问题。第一种方法通过构建逆序序列并进行交换,第二种方法使用归并排序。博主提供了示例和代码解释,强调了这两种方法的时间复杂度问题。
562

被折叠的 条评论
为什么被折叠?



