עבור לתוכן

JAVA | HEAPIFY ON D-ARY

Featured Replies

פורסם

שלום לכולם

התבקשתי לכתוב תוכנית שתקבל 3 מערכים ABC

A=50

B=100

C=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;
}

פורסם

לא ברור מההסבר שלך מה השאלה ומה התכנית אמורה לעשות בכלל.

חוץ מזה לא ברור איפה אתה מתקשה.

הפונקציה child לא עובדת (תחשוב למה).

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

פורסם
  • מחבר

לא קריטי CHILD סוגריים לא נכונים

וגם לא קריטי SWAP [] [] [] []

בוא נתייחס לקוד כפוסאדו קוד

הנה השאלה

mwnzcatjd50m.jpg

פורסם
  • מחבר

ביצירה של HEAPSORT על ערימה D ארית

כמובן גם HEAPIFY על ערימה D ארית וכו..

פורסם
  • מחבר

?

ארכיון

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

דיונים חדשים