在 Java 中,如何将所有 0 移动到数组的末尾保留数组的顺序? [2种方式]

已发表: 2020-12-31
在 Java 中,如何将所有 0 移动到数组的末尾保留数组的顺序? [2种方式]

我一直在解决在不同的采访中以各种组合moving all 0's to end的问题。 有时我要求将所有的 0 移到数组的前面,对没有任何数据结构的数组进行排序等等。

在本教程中,我们将介绍移动所有 0 以结束保留数组顺序的简单示例。 有两种方法。

方法-1)

QuickSort 分区逻辑。 什么是枢轴点?

  • Pivot point是快速排序算法中的一个关键元素。 它围绕枢轴点执行和分区集合。
  • 它将大于枢轴的元素排列在它之前,将大于枢轴的元素排列在它之后。
  • 继续循环以对数组进行排序

逻辑很简单:

  • 遍历一个数组。
  • 如果 array[i] 不等于 0,则将其与当前索引交换。
  • 如果array[i] == 0,简单地跳过循环
  • 在我们的例子0 is a Pivot point
  • 每次我们找到 0,计数器枢轴将增加,元素将在枢轴点之前移动。

方法-2)

  • 创建一个相同大小的新数组
  • 遍历数组并跳过添加 0

这是一个完整的程序:

CrunchifyMoveAll0ToEnd.java

Eclipse 控制台输出:

如果您知道解决此问题的更好方法,请告诉我。 我很想听听你的想法。