עבור לתוכן

מיון מערך של אובייקטים ג'אווה

Featured Replies

פורסם

יש לי מערך של אובייקטים של 1000 מקומות [10][100]

בכל מקום במערך יש לי אובייקט עם שתי תכונות בלבד

האחת מילה בעיברית והשניה הפרוש לה באנגלית

ואני רוצה למיין את המערך לפי האלף בית העברי לדוגמא :

אב קטן מ אבא

אבא קטן מאמא

אנציקלופדיה קטן מהמילה בגד

נראה לי לולאת for מקוננת תיהיה טובה איך אני עושה את זה ? תודה .

פורסם

השאלה ששאלת היא לא כזו שאפשר לענות עליה בשתי שורות, יש הרבה דרכים למיין מערך (מיון בינארי, מיון מהיר וכדו'),תגגל על מיונים.

ותסתכל על הפונקציות של STRING, אתה יכול להשתמש ב-String.compare(String) כדי לדעת איזו מחרוזת באה לפני ואיזו אחרי.

פורסם
  • מחבר

עריכה אפשר להשתמש במערך חד מימדי [1000]

אני אגגל קצת

אם למישהו בא לו לעזור לי אשמח . :)

פורסם

אתה צריך לממש את המיון בעצמך, או שאתה יכול להשתמש בפונקציות קיימות?

פורסם
  • מחבר

אני יכול להשתמש בפונקציות של String

עריכה: לפני שאנחנו קופצים למים העמוקים ,

איך אני משווה שתי מחרוזות ומחליט מי גדול ממי ? (הקטן אאאאא הגדול תתתתתתת )

פורסם

אז כמו ש-fatman ענה, תגגל על מיונים (יש אלגוריתמים בסיסיים בויקיפדיה).

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

וזה אכן ידרוש לולאת for מקוננת.

פורסם

השאלה ששאלת היא לא כזו שאפשר לענות עליה בשתי שורות, יש הרבה דרכים למיין מערך (מיון בינארי, מיון מהיר וכדו'),תגגל על מיונים.

ותסתכל על הפונקציות של STRING, אתה יכול להשתמש ב-String.compare(String) כדי לדעת איזו מחרוזת באה לפני ואיזו אחרי.

אם אתה מקבל 0 הם שווים, שלילי או חיובי, תבדוק במסמכולוגיה.

פורסם
  • מחבר

אסור לי להשתמש ב compare()

מותר לי במתודות האלו

charat() concat() indexof() equals()

פורסם

שמעת על קוד ASCII?

לכל אות (CHAR) יש ערך מספרי, תיקח את האות הראשונה מכל מחרוזת ותהפוך אותה ל-int (ע"י new Intege) ן- Integer.intValue, וככה אתה יכול להשוות מי גדול ממי, ואם האות הראשונה בשתי המחרוזות שווה אז תיקח את השניה וכן הלאה.

פורסם

חייבים בג'אווה להמיר ל-int? אי אפשר פשוט להשוות אותם כ-char?

פורסם
  • מחבר

+1 ;D

פורסם

יכול להיות שכן, לא זוכר, אבל העיקרון ברור

פורסם

בJAVש, CHAR הוא UNICODE(2 בתים).

פורסם
  • מחבר

טוב אחרי כמה נגיחות בקירות .... הצלחתי לצור מתודה שמחזירה 1 אם המילה קטנה , 0 אם היא גדולה .

 public int whoIsSmaller(Dictionary other)
{
int x , i=0 ;
if (this._hebW.length() <other._engW.length())
x=this._hebW.length() ;
else
x=other._engW.length() ;


for ( i= 0 ; i< x ;i++ ) {
if (this._hebW.charAt(i) <other._engW.charAt(i))
return 1;
else if (this._hebW.charAt(i) >other._engW.charAt(i))
return 0;
}
if (x==i) {
if (this._hebW.length() <other._engW.length())
return 1;
else
return 0 ;
}
return 0;
}

פורסם

קימיים שני אלגורתמים ידועים מאד לצורך זה

1.SELECTION SORT

2.BUBBLE SORT

בריאשון אתה רץ על המערך ומוצא את האיבר המינימלי

ושם אותו במקום בריאשון אחר כך אתה רץ על כל המערך חוץ מהמקום הריאשון

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

האיבר האחרון.

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

קח משתנה זמני שים בו את האיבר הריאשון.תשווה אותו עם המקום השני.אם מה שיש במקום

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

בשני הרעיון הוא לבעבע את האיבר הגדול ביותר למעלה תוך החלפת שני זוגות של תאים.

רצים על המערך בודקים ריאשון אם שני ,אם ריאשון גדול יותר אז תחיליף אותם ,אם ריאשון קטן יותר אז תבדוק שני עם שלישי וכך הלאה

אחר כל רצים עליו שוב עד המקום N-1 וכולי.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים