例如,输入是
Array 1 = [2, 3, 4, 5]
Array 2 = [3, 2, 5, 4]
Run Code Online (Sandbox Code Playgroud)
需要的最小交换次数是2
.
交换不需要与相邻的单元相交,任何两个元素都可以交换.
我在我正在开发的应用程序中遇到了以下问题:
我给了两个清单:
list1 = {Z,K,A,B,A,C}
list2 = {A,A,B,C,K,Z}
list2
是保证是的排序版本list1
.
我的目标是排序list1
仅通过交换单元内list1
.因此,举例来说,我不能遍历list2
,只是分配的每一个元素i
中list1
的每个元素j
中list2
.
使用list2
作为一种资源,我需要排序list1
的互换可能的绝对最低数量.
是否有专门用于此目的的一组算法?我没有听说过这样的事情.
我需要做这样的事情:假设我有一个数组:
[3, 4, 1, 2]
Run Code Online (Sandbox Code Playgroud)
我需要交换 3 和 4,以及 1 和 2,所以我的数组看起来像[4, 3, 2, 1]
. 现在,我可以只做sort()
. 在这里我需要计算我需要多少次迭代,将初始数组更改为最终输出。例子:
// I can sort one pair per iteration
let array = [3, 4, 1, 2, 5]
let counter = 0;
//swap 3 and 4
counter++;
// swap 1 and 2
counter++;
// 5 goes to first place
counter++
// now counter = 3 <-- what I need
Run Code Online (Sandbox Code Playgroud)
编辑:这是我尝试过的。并不总是有效...它来自这个问题:Bubble sort algorithm JavaScript
let counter = 0;
let swapped;
do …
Run Code Online (Sandbox Code Playgroud)