עבור לתוכן

בעיה עם שיטת מיון רקרוסיבי - (Java)

Featured Replies

פורסם

אהלן לכולם ,

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

מישהו רואה את הבעיה ?

מצורף .

- - - תגובה אוחדה: - - -

קצת התבלבלתי איתו ..

תודה מראש !

נערך על-ידי Second Edition
java

פורסם

למה אתה מעלה את הקוד כתמונה? (ועוד bmp??)

תדביק ב www.pastebin.com או שתשתמש בכפתור הכנסת קוד.

חוץ מזה תסביר מה הקוד שלך אמור לעשות.

נערך על-ידי שניצל

פורסם
  • מחבר

הקוד אמור לקחת מערך חד-מימדי , שאינו ממוין . ולמיין אותו מהגדול לקטן . (משמאל-לימין).

הוא עושה את זה מלבד הספרה 1. (בגלל זה העלתי כתמונה)

מקווה שלזה התכוונת :

public static int largest(int [] arr , int index , int largestIndex)    {
if(index==(arr.length))
return largestIndex;

int temp = arr[largestIndex];

if(arr[index]>temp)
largestIndex=index;

index++;

return largest(arr,index,largestIndex);
}


public static int sort(int [] arr , int primeIndex )
{
if(primeIndex==(arr.length-1))
return arr[primeIndex];

int largestIndex = largest(arr,primeIndex,0);

int temp1 =arr[primeIndex];
arr[primeIndex]=arr[largestIndex];
arr[largestIndex]=temp1;

primeIndex++;

return sort(arr,primeIndex );



}

או לזה :

http://pastebin.com/raw.php?i=dx0MkCi9

- - - תגובה אוחדה: - - -

אני מקווה שזו איזו טעות קטנה ..

נערך על-ידי Second Edition

פורסם

אכן יש לך טעות קטנה.

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

בלי קשר מומלץ שגם תכתוב פה את ה-main, יכול להיות שיש טעות גם שם.

נערך על-ידי שניצל

פורסם
  • מחבר

בטח גדול-שווה-קטן איפשהו ?

זה חלק מקוד יותר גדול , אבל התפקיד של הקטע הזה (שתי השיטות הנ"ל) הוא למיין .

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

תודה !

- - - תגובה אוחדה: - - -

ד"א -

יש איזה משהו שניתן לעשות בצורה יותר יפה/אלגנטית ? (בשתי השיטות הנ"ל)

פורסם

אל תשאל אותי, תבדוק בעצמך. תכתוב מבחן - פונקציות main פשוטה שתפקידה אך ורק לבחון את שתי הפונקציות האלה. ה-main הזו צריכה ליצור מערך (hard coded, כלומר שהמערך יהיה כתוב בקוד ולא יקלט מהמשתמש או משהו כזה), להפעיל עליו את הפונקציות האלה ולוודא שהתוצאה שמתקבלת היא מה שאתה מצפה לו. אם לא אז כמו שאמרתי - תדבג כדי לראות האם הערכים שהפונקציות מקבלות ומחזירות בכל שלב הם מה שאתה מצפה לו.

פתרון יותר אלגנטי הוא להעיף לחלוטין את הרקורסיה ולהשתמש בלולאות. חוץ מזה לא ברור לי למה משמש ערך ההחזרה של הפונקציה sort.

ארכיון

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

דיונים חדשים