php - 使用存储对数组进行排序

标签 php arrays algorithm sorting

我有一个这样的数组:

$a = [2, 1, 1, 2, 3, 1, 3, 2];

我需要使用外部变量对其进行排序。但我需要以下输出:

$output = [
    [0, s],  // Move $a[0] to storage
    [5, 0],  // Move $a[5] to $[0]
    [s, 5],  // Move storage to $a[5]
    [4, s],  // Move $a[4] to storage
    [7, 4],  // Move $a[7] to $a[4]
    [s, 7]   // Move storage to $[7]
];

我需要一种算法来生成数组、分隔字符串或任何类型的输出,其中包含对数组进行排序的步骤。

主要在 PHP 中,但我可以从任何语言实现它。

最佳答案

一个有趣但可能不是那么有效的想法:

确定每个元素的计数和排序偏移量:

$a = [2, 1, 1, 2, 3, 1, 3, 2];
$count_and_offset = [1 => [3,0], 2 => [3,3], 3 => [2,6]]

确定排列,

$a_permutation = [5, 2, 3, 4, 8, 1, 7, 6];

枚举循环(http://en.wikipedia.org/wiki/Cyclic_permutation),

(1586)(2)(3)(4)(7)

做一个列表(例子不是从零开始的),

[[6, s]
,[8, 6]
,[5, 8]
,[1, 5]
,[s, 1]]

关于php - 使用存储对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25565978/

相关文章:

php - 使用 CodeIgniter 删除文件?

php - 在 PHP 中关联两个值

php - 在 php 中计算访问次数的最佳方法

python - 如何使用 2D 蒙版过滤 3D 阵列

ios - 从数组中删除匹配条目

javascript - 生成唯一ID js

python - 计算两个文本 block 之间百分比差异的算法

php - 在 PHP 中制作评论部分的安全方法

algorithm - 搜索分布式算法来分发一些对象

PHP 查找数组的所有(有点)唯一组合