פורסם 2014 בדצמבר 1610 שנים שלום לכולםהתבקשתי לכתוב תוכנית שתקבל 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; }
פורסם 2014 בדצמבר 1610 שנים לא ברור מההסבר שלך מה השאלה ומה התכנית אמורה לעשות בכלל.חוץ מזה לא ברור איפה אתה מתקשה.הפונקציה child לא עובדת (תחשוב למה).פונקציית ה-swap שלך לא עובדת. כשאתה מעביר משתנים פרימיטיביים לפונקציה אז הערכים שלהם מועתקים, ואז השמה לתוכם רק משנה את הערך של המשתנים שהועתקו, לא את המשתנים המקוריים.
פורסם 2014 בדצמבר 1610 שנים מחבר לא קריטי CHILD סוגריים לא נכונים וגם לא קריטי SWAP [] [] [] [] בוא נתייחס לקוד כפוסאדו קוד הנה השאלה
פורסם 2014 בדצמבר 1610 שנים מחבר ביצירה של HEAPSORT על ערימה D ארית כמובן גם HEAPIFY על ערימה D ארית וכו..
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.