查找交换的最小数量以对数组进行排序

桑迪普·库马尔(Sandeep Kumar)

给定一个包含不同元素的数组,对它进行排序所需的最小交换数量是多少?

例如,阵列[4, 2, 1, 3]至少需要2次交换(例如交换4和1,然后交换4和3)。

这是我的方法:

B = sort(copy(A))
for i = 0 ... len(A) - 1
    if A[i] != B[i]
        find j such that A[j] == B[i]
        swap(A[i], A[j])

我的方法正确吗?还有另一种解决方法吗?

讽刺的

这取决于您是要查找交换的最小数量还是实际对数组进行排序。

如果您要对数组进行排序,那么最少的交换次数将无法帮助您更快地对其进行排序。寻找最佳的排序算法将帮助您更快地进行排序。通常,这意味着找到复杂度为O(n log(n))的对象(除非数组很小或内存是主要约束)。要获得有关此问题的帮助,Google是您的朋友。

如果您只是试图找到所需的最小交换次数,而没有对其进行实际排序,那么您正在考虑对选择排序进行一些修改。一个人走的路是找到最小值,与第一个索引交换,找到第二个最低,与第二个索引交换,依此类推。

但是正如我所说,找到最小数量的掉期并不能优化排序。例如,选择排序的交换可能比快速排序的交换要少,但是选择排序确定要交换的索引的时间会更长。选择排序的时间复杂度为O(n ^ 2)。

顺便说一下,O(n ^ 2)和O(n log(n))之间的区别并不像看起来那么琐碎。如果数字大约为1,000,000,则可能是20,000,000与1,000,000,000,000之间的差。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对数组进行排序的“插入”的最小数量

来自分类Dev

如何找到在JavaScript中按降序对数字数组进行排序所需的最小交换次数

来自分类Dev

如何以最小的相邻元素交换对数组进行排序

来自分类Dev

如何删除元素以对数组进行排序

来自分类Dev

过滤3个数组以对数据进行排序

来自分类Dev

对数组进行排序并查找更改-Swift

来自分类Dev

在Perl中使用逗号或点对字符串进行排序以对数组进行排序

来自分类Dev

基于最小值的索引对数组进行排序?

来自分类Dev

javascript根据最小-最大位置对数组进行排序

来自分类Dev

对数组进行排序以对匹配的元素进行分组,但保持原始顺序

来自分类Dev

Mongodb聚合以对数组中最常见的项目进行排序?

来自分类Dev

如何创建对数字数组进行排序并能够即时交换数组的函数?

来自分类Dev

如何创建对数字数组进行排序并能够即时交换数组的函数?

来自分类Dev

查找最小数量并打印的功能

来自分类Dev

列对数组进行排序?

来自分类Dev

如何对数组进行排序

来自分类Dev

以升序对数组进行排序

来自分类Dev

无法对数组进行排序

来自分类Dev

对数组进行冒泡排序所需的最少交换次数是多少?

来自分类Dev

如何找到最小数量的开关以升序对给定排列(例如1-10)进行排序

来自分类Dev

创建一个循环以对数据进行排序

来自分类Dev

对数组进行排序并检索排序的索引

来自分类Dev

JSONata 对数组进行排序/排序

来自分类Dev

是否有任何内置方法可以对数组的一部分进行排序?

来自分类Dev

Perl:如何按外观数量对数组中的项进行排序和转换

来自分类Dev

如何按可创建的唯一组数量对数组进行排序

来自分类Dev

如何用名称,日期和数量对数组进行排序?的PHP

来自分类Dev

按匹配数量对数组进行排序,然后将最适合的放在 php 中

来自分类Dev

用最小和最大值交替对数组进行排序

Related 相关文章

  1. 1

    对数组进行排序的“插入”的最小数量

  2. 2

    如何找到在JavaScript中按降序对数字数组进行排序所需的最小交换次数

  3. 3

    如何以最小的相邻元素交换对数组进行排序

  4. 4

    如何删除元素以对数组进行排序

  5. 5

    过滤3个数组以对数据进行排序

  6. 6

    对数组进行排序并查找更改-Swift

  7. 7

    在Perl中使用逗号或点对字符串进行排序以对数组进行排序

  8. 8

    基于最小值的索引对数组进行排序?

  9. 9

    javascript根据最小-最大位置对数组进行排序

  10. 10

    对数组进行排序以对匹配的元素进行分组,但保持原始顺序

  11. 11

    Mongodb聚合以对数组中最常见的项目进行排序?

  12. 12

    如何创建对数字数组进行排序并能够即时交换数组的函数?

  13. 13

    如何创建对数字数组进行排序并能够即时交换数组的函数?

  14. 14

    查找最小数量并打印的功能

  15. 15

    列对数组进行排序?

  16. 16

    如何对数组进行排序

  17. 17

    以升序对数组进行排序

  18. 18

    无法对数组进行排序

  19. 19

    对数组进行冒泡排序所需的最少交换次数是多少?

  20. 20

    如何找到最小数量的开关以升序对给定排列(例如1-10)进行排序

  21. 21

    创建一个循环以对数据进行排序

  22. 22

    对数组进行排序并检索排序的索引

  23. 23

    JSONata 对数组进行排序/排序

  24. 24

    是否有任何内置方法可以对数组的一部分进行排序?

  25. 25

    Perl:如何按外观数量对数组中的项进行排序和转换

  26. 26

    如何按可创建的唯一组数量对数组进行排序

  27. 27

    如何用名称,日期和数量对数组进行排序?的PHP

  28. 28

    按匹配数量对数组进行排序,然后将最适合的放在 php 中

  29. 29

    用最小和最大值交替对数组进行排序

热门标签

归档