בודק אם מערך ממוין בג'אווה

1. סקירה כללית

במדריך זה נראה דרכים שונות לבדוק אם מערך ממוין.

לפני שמתחילים, יהיה מעניין לבדוק כיצד למיין מערכים בג'אווה.

2. עם לולאה

אחת הדרכים לבדוק היא באמצעות ל לוּלָאָה. אנחנו יכולים חזרו על כל ערכי המערך אחד אחד.

בואו נראה איך לעשות את זה.

2.1. מערך פרימיטיבי

במילים פשוטות, נבחן את כל התפקידים מלבד האחרונה. הסיבה לכך היא שאנחנו הולכים להשוות עמדה אחת עם העמדה הבאה.

אם חלקם לא ממוינים, השיטה תחזור שֶׁקֶר. אם אף אחת מההשוואות לא חוזרת שֶׁקֶר, המשמעות היא שמערך ממוין:

בוליאני isSorted (int [] מערך) {for (int i = 0; i array [i + 1]) return false; } להחזיר נכון; }

2.2. אובייקטים שמיישמים ניתן להשוות

אנחנו יכולים לעשות משהו דומה עם אובייקטים שמיישמים ניתן להשוות. במקום להשתמש בסימן גדול מ- נשתמש בהשוואה ל:

הבוליאני isSorted (Comparable [] array) {for (int i = 0; i 0) return false; } להחזיר נכון; }

2.3. חפצים שלא מיישמים ניתן להשוות

אבל, מה אם האובייקטים שלנו לא יישמו ניתן להשוות? במקרה זה נוכל במקום זאת ליצור משווה.

בדוגמה זו נשתמש ב- עוֹבֵד לְהִתְנַגֵד. זה POJO פשוט עם שלושה שדות:

יישומי עובדים בכיתה ציבורית ניתן לבצע serializable {מזהה פרטי פרטי; שם מחרוזת פרטי; גיל פרטי פרטי; // גטרים וקובעים}

לאחר מכן, עלינו לבחור באיזה שדה נרצה להזמין. הנה, בואו נזמין לפי גיל שדה:

Comparator byAge = Comparator.comparingInt (עובד :: getAge);

ואז, אנו יכולים לשנות את השיטה שלנו גם לקחת a משווה:

בוליאני isSorted (מערך אובייקט [], משווה השוואה) {עבור (int i = 0; i 0) return false; } להחזיר נכון; }

3. רקורסיבית

אנחנו יכולים, כמובן, להשתמש במקום רקורסיה. הרעיון כאן הוא שנבדוק שתי מיקומים במערך ואז נשוב עד שנבדוק כל מיקום.

3.1. מערך פרימיטיבי

בשיטה זו, אנו בודקים את שתי העמדות האחרונות. אם הם ממוינים, נקרא שוב לשיטה אך עם עמדה קודמת. אם אחת מהעמדות הללו לא ממוינת, השיטה תחזור שֶׁקֶר:

בוליאני isSorted (int [] מערך, int אורך) אורך מערך [אורך - 1]) return false; return isSorted (מערך, אורך - 1); 

3.2. אובייקטים שמיישמים ניתן להשוות

עכשיו, בואו נסתכל שוב כאובייקטים שמיישמים ניתן להשוות. נראה את אותה גישה עם בהשוואה ל יעבוד:

בוליאני isSorted (מערך השוואה [], אורך int) 

3.3. חפצים שלא מיישמים ניתן להשוות

לאחרונה, בואו ננסה את שלנו עוֹבֵד התנגד שוב, הוסף את משווה פָּרָמֶטֶר:

בוליאני isSorted (מערך אובייקט [], משווה השוואה, אורך int) אם (מערך == null 

4. מסקנה

במדריך זה ראינו כיצד לבדוק אם מערך ממוין או לא. ראינו גם פתרונות איטרטיביים וגם רקורסיביים.

ההמלצה שלנו היא להשתמש בפתרון הלולאה. זה נקי יותר וקל יותר לקריאה.

כרגיל, את קוד המקור ממדריך זה ניתן למצוא ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found