使数组有序的最少交换次数.docxVIP

  • 30
  • 0
  • 约小于1千字
  • 约 3页
  • 2023-10-14 发布于河北
  • 举报
使数组有序的最少交换次数 题目1: 给出一个序列,只交换相邻两数,使得序列升序排列,求出最少交换次数。 思路: 如果说只是交换相邻两个数字。那么就是这个序列的逆序数。 1.假设序列个数为n,我们先把最大的数换到最后,因为是相邻数字交换,所以把最大数交换到最后,需要交换的次数为最大数后的数字个数。 2.当完成最大数的交换后,可以将最大数从序列中划去不管了,即此时序列个数为n-1了,我们再在该序列中找到一个最大数,进行相同操作。 3.所以使整个序列有序的交换次数为,这个序列的所有逆序总数。 比如4,3,2,1。 (4,3) (4,2) (4,1),有3个逆序,交换后 3,2,1,4 (3,2) (3,1),有2个逆序,交换后2,1,3,4 (2,1),有1个逆序,交换后1,2,3,4 题目2: 给出一个序列,可交换任意两个数,使序列升序排列,求最少交换次数。 思路: 与之前不同,之前是只能交换相邻两数。 比如4,3,2,1,如果只交换相邻两数,最少交换次数为6。 但如果是交换任意两数,最少交换次数就为2。 有序列5,4,3,2,1。共5个数。 nums [0] [1] [2] [3] [4] 5 4 3 2 1 1 2 按升序排列之后为 nums1 [0] [1] [2] [3] [4] 1 2 3 4 5 1 2 我们可以发现5,1虽然不在自己应该在的位置,但是如果把它们两个看成整体

文档评论(0)

1亿VIP精品文档

相关文档