Javaですべての0を配列の最後に移動する方法配列の順序を保持しますか? 【2通り】

公開: 2020-12-31
Javaの場合、すべての0を配列の最後に移動して配列の順序を保持するにはどうすればよいですか? 【2通り】

私は、さまざまな組み合わせのさまざまなインタビューで、 moving all 0's to endという問題に取り組んできました。 0をすべて配列の前に移動したり、データ構造なしで配列を並べ替えたりするように依頼することがあります。

このチュートリアルでは、すべての0を移動して、配列の順序の保持を終了する簡単な例について説明します。 2つのアプローチがあります。

アプローチ-1)

クイックソートパーティショニングロジック。 ピボットポイントとは何ですか?

  • Pivot pointは、クイックソートアルゴリズムの重要な要素です。 ピボットポイントを中心にコレクションを実行して分割します。
  • ピボットよりも大きい配列要素はその前に配置され、ピボットよりも大きい要素はその後ろに配置されます。
  • ループを続行して配列を並べ替えます

ロジックは非常に単純です。

  • 配列を反復処理します。
  • array [i]が0に等しくない場合は、現在のインデックスと交換します。
  • array [i] == 0の場合、ループをスキップするだけです
  • この場合0 is a Pivot pointです。
  • 0が見つかるたびに、カウンターピボットがインクリメントされ、要素がピボットポイントの前に移動します。

アプローチ-2)

  • 同じサイズの新しいアレイを作成します
  • 配列を反復処理し、0の追加をスキップします

これが完全なプログラムです:

CrunchifyMoveAll0ToEnd.java

Eclipseコンソールの出力:

この問題を解決するためのより良い方法を知っているかどうか教えてください。 私はあなたの考えを聞いてみたいです。