将数组3,7,1,6,2,4,8,5中的元素从大到小的顺序排列,每次可以任意交换两个元素,求最少的交换次数。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将数组3,7,1,6,2,4,8,5中的元素从大到小的顺序排列,每次可以任意交换两个元素,求最少的交换次数。相关的知识,希望对你有一定的参考价值。
请写出具体的交换过程
参考技术A 最少交换次数肯定是与8 7 6 5 4 3 2 1 不对应的数的个数再减可以形成的环的个数(因为每个环的最后一个数都不用排序的,前面都排好了,最后一个自然就序),此数组有两个环,所以是5次。hint:环指的是例如上面数组中的1 6 5三个数虽然都不在自己应该在的位置,但他们占据了排好序后1,6,5应该占据的位置,所以可以抽象成一个环,环内换顺序就行了。同样3,2,4,8也是一个环,还有,对应好的7也可以看做是一个环,所以是8-1-1-1=5
交换过程有很多:
eg:
交换3 8 变成8 7 1 6 2 4 3 5
交换1 6 变成8 7 6 1 2 4 3 5
交换1 5 变成8 7 6 5 2 4 3 1
交换2 4 变成8 7 6 5 4 2 3 1
交换2 3 变成8 7 6 5 4 3 2 1
注意是环内交换本回答被提问者和网友采纳
以上是关于将数组3,7,1,6,2,4,8,5中的元素从大到小的顺序排列,每次可以任意交换两个元素,求最少的交换次数。的主要内容,如果未能解决你的问题,请参考以下文章
将数组8,23,4,16,77,-5,53,100中的元素按从大到小的顺序排列,最少需要交换几次?我知道答案是5次
用Python写一个 输入10个数,从大到小排序,并输出前五个数据的和 输入 9 8 7 6 5 4 3 2 1 输出35?