JAVA | HEAPIFY ON D-ARY - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

JAVA | HEAPIFY ON D-ARY


BenSalem2

Recommended Posts

שלום לכולם

התבקשתי לכתוב תוכנית שתקבל 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 שלך לא עובדת. כשאתה מעביר משתנים פרימיטיביים לפונקציה אז הערכים שלהם מועתקים, ואז השמה לתוכם רק משנה את הערך של המשתנים שהועתקו, לא את המשתנים המקוריים.

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

ארכיון

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

×
  • צור חדש...