בעיה עם שיטת מיון רקרוסיבי - (Java) - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

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


Second Edition

Recommended Posts

אהלן לכולם ,

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

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

מצורף .

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

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

תודה מראש !

קישור לתוכן
שתף באתרים אחרים

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

הוא עושה את זה מלבד הספרה 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

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

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

קישור לתוכן
שתף באתרים אחרים

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

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

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

קישור לתוכן
שתף באתרים אחרים

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

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

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

תודה !

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

ד"א -

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

קישור לתוכן
שתף באתרים אחרים

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

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...