【问题标题】:Sorting array by right shifting any three elements of the array通过右移数组的任意三个元素对数组进行排序
【发布时间】:2020-05-07 09:45:49
【问题描述】:

我有一个由 N 个整数组成的数组,满足 1 ≤ a[i] ≤ N。 (N 个整数的排列)。

数组元素的ie可以是5,1,2,3,4.

我需要通过选择任意三个索引 a[p]、a[q]、a[r] 对数组进行排序并进行右移操作...

对数组进行排序的最少操作数是多少?

对于这个数组5, 8, 6, 3, 7, 9, 2, 1, 10, 4,答案是5,要移动的索引是

1 5 7;
1 2 8;
3 6 9;
3 4 10;
3 4 10;

【问题讨论】:

  • 对于这个数组 5 8 6 3 7 9 2 1 10 4 答案是 5。索引是 1 5 7; 1 2 8; 3 6 9; 3 4 10; 3 4 10;
  • 将此信息和自己的想法添加到男性更清楚。
  • 这似乎来自正在进行的比赛:codechef.com/MAY20B/problems/TRPLSRT

标签: arrays algorithm sorting


【解决方案1】:

有趣的问题。

让我们看看 - 我们从

 5 8 6 3 7 9 2 1 10 4

通过偏移量 1、2、8(从 1 开始)向右旋转一个位置

 1 5 6 3 7 9 2 8 10 4

所以现在 1 和 8 都在它们的最终位置

然后,旋转 4、9、10 产生

 1 5 6 4 7 9 2 8 3 10

现在 1、4、8 和 10 处于最终位置

然后,旋转 3、6、9 得到

 1 5 3 4 7 6 2 8 9 10

现在 1、3、4、6、8、9 和 10 处于最终位置

最后,旋转 2、5、7 产生

 1 2 3 4 5 6 7 8 9 10

所以 4 圈。

现在,我是手动完成的。开发算法以找到像这样的解决方案留给读者作为练习;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    相关资源
    最近更新 更多