עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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 ארית וכו..

פורסם
  • מחבר

?

ארכיון

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

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.