في Java ، كيف تنقل جميع 0 إلى نهاية ترتيب حفظ الصفيف؟ [2 طرق]

نشرت: 2020-12-31
في Java ، كيف تنقل جميع 0 إلى نهاية ترتيب حفظ المصفوفة في المصفوفة؟ [2 طرق]

لقد كنت ألعب مع مشكلة moving all 0's to end المصفوفات في مقابلات مختلفة في مجموعات مختلفة. أحيانًا أطلب نقل كل 0 إلى مقدمة المصفوفة ، وفرز مصفوفة بدون أي بنية بيانات وما إلى ذلك.

في هذا البرنامج التعليمي ، سنستعرض مثالًا بسيطًا لنقل جميع 0 لإنهاء الاحتفاظ بترتيب المصفوفة. هناك طريقتان.

النهج 1)

منطق تقسيم QuickSort. ما هي النقطة المحورية؟

  • Pivot point هي عنصر أساسي في خوارزمية الفرز السريع. يقوم بتنفيذ المجموعة وتقسيمها حول النقطة المحورية.
  • يقوم بترتيب عناصر مصفوفة أكبر من المحور الذي يسبقه ، والعناصر الأكبر من المحور تكون بعده.
  • تواصل من خلال الحلقة لفرز مجموعة

المنطق بسيط للغاية:

  • كرر من خلال مصفوفة.
  • إذا كانت المصفوفة [i] لا تساوي 0 ، فاستبدلها بالفهرس الحالي.
  • إذا كانت المصفوفة [i] == 0 ، ببساطة تخطي الحلقة
  • في حالتنا 0 is a Pivot point .
  • في كل مرة وجدنا فيها 0 ، سيتم زيادة محور العداد وسيتم تحريك العنصر قبل النقطة المحورية.

النهج 2)

  • إنشاء مجموعة جديدة بنفس الحجم
  • كرر خلال مصفوفة وتخطي إضافة 0

هنا برنامج كامل:

CrunchifyMoveAll0ToEnd.java

إخراج وحدة التحكم Eclipse:

اسمحوا لي أن أعرف إذا كنت تعرف طريقة أفضل لحل هذه المشكلة. أنا أحب أن أسمع أفكارك.