BenSalem2 פורסם 2014 בדצמבר 16 Share פורסם 2014 בדצמבר 16 שלום לכולםהתבקשתי לכתוב תוכנית שתקבל 3 מערכים ABCA=50B=100C=200לכולם אני מכניס RANDOM #ולאחר מכן אני מפעיל את HEAPSORT ובודק את מספר ההעתקות ומספר ההשואות כאשר d=2,3,4,5משום מה החלק שאמור להיות הכי פשוט תוקע אותי,מרגיש קצת דביל לפנות בשאלה שכזאת אבל אשמח לעזרההקוד עד כה...public static void main (String[] args) { Random generator = new Random(); int[] a=new int[50]; int[] b=new int[100]; int[] c=new int[200]; System.out.print("TESTING"); for(int i=0;i<a.length;i++) { a[i]=generator.nextInt(1000); } for(int q=0;q<a.length-1;q++) System.out.print(a[q]+" "); for(int i=0;i<b.length;i++) { b[i]=generator.nextInt(1000); } for(int i=0;i<c.length;i++) { c[i]=generator.nextInt(1000); } int d =2; DBuildHeap(a,d); Dheapify(a,a.length-1,d); for(int p=0;p<a.length-1;p++) System.out.print(a[p]); } public static int parent(int i, int d) { return (i-1/d); } public static int child (int i, int k, int d) { return ((d*(i-1))+k+1); } public static void DBuildHeap(int arr[],int d) { int heapsize = arr.length-1; for(int i = arr.length-1/d;i>1;i++) Dheapify(arr,i,d); } public static void Dheapify(int arr[],int k, int d) { int largest = k; int heapsize = arr.length-1; for(int j=1;j<=arr.length;j++) { j=child(k,j,d); if(j<=heapsize && arr[j]>arr[largest]) largest = j; if(largest != k) swap(arr[k],arr[largest]); Dheapify(arr,largest,d); } } public static int DExtractMax(int arr[],int d) { int heapsize = arr.length-1; if (arr.length-1<1) System.out.println("Error"); int max = arr[1]; arr[1] = arr[heapsize]; heapsize = heapsize -1; Dheapify(arr,1,d); return max; } /* Function to swap two numbers in an array */ public static void swap(int i, int j) { //System.out.println("called"); int tmp = i; i = j; j = tmp; } קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2014 בדצמבר 16 Share פורסם 2014 בדצמבר 16 לא ברור מההסבר שלך מה השאלה ומה התכנית אמורה לעשות בכלל.חוץ מזה לא ברור איפה אתה מתקשה.הפונקציה child לא עובדת (תחשוב למה).פונקציית ה-swap שלך לא עובדת. כשאתה מעביר משתנים פרימיטיביים לפונקציה אז הערכים שלהם מועתקים, ואז השמה לתוכם רק משנה את הערך של המשתנים שהועתקו, לא את המשתנים המקוריים. קישור לתוכן שתף באתרים אחרים More sharing options...
BenSalem2 פורסם 2014 בדצמבר 16 מחבר Share פורסם 2014 בדצמבר 16 לא קריטי CHILD סוגריים לא נכונים וגם לא קריטי SWAP [] [] [] [] בוא נתייחס לקוד כפוסאדו קוד הנה השאלה קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2014 בדצמבר 16 Share פורסם 2014 בדצמבר 16 אוקי, ואיפה אתה מסתבך? קישור לתוכן שתף באתרים אחרים More sharing options...
BenSalem2 פורסם 2014 בדצמבר 16 מחבר Share פורסם 2014 בדצמבר 16 ביצירה של HEAPSORT על ערימה D ארית כמובן גם HEAPIFY על ערימה D ארית וכו.. קישור לתוכן שתף באתרים אחרים More sharing options...
BenSalem2 פורסם 2014 בדצמבר 17 מחבר Share פורסם 2014 בדצמבר 17 ? קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.