import java.util.Random;
public class Heap {
private static int maxsize = 100;
private static int mindata = -(1 << 31);
private int size;
private int[] data_array;
public Heap() {
size = 0;
data_array = new int[maxsize];
data_array[0] = mindata;
}
public void Insert(int value) {
try {
if (maxsize == size)
throw (new Exception());
} catch (Exception e) {
System.out.println("full size!");
}
size++;
data_array[size]=value;
int cindex = size;
int pindex = cindex/2;
while(1!=cindex)
{
if(data_array[pindex] > data_array[cindex])
swap(cindex,pindex);
else
break;
cindex /= 2;
pindex /= 2;
}
}
public int Delete() {
try {
if (IsEmpty())
throw (new Exception());
} catch (Exception e) {
System.out.println("null data!");
}
int cindex = 1;
int pindex = 2;
int tmp = data_array[1];
while(pindex<=size)
{
if(data_array[pindex+1]<data_array[pindex] && (pindex+1<=size))
pindex++;
data_array[cindex]=data_array[pindex];
cindex = pindex;
pindex *= 2;
}
size--;
return tmp;
}
public void PrintHeap() {
System.out.println("The Heap data is as follows");
try {
if (0 == size)
throw (new Exception());
} catch (Exception e) {
System.out.println("null data!");
}
for (int i = 0; i < size; i++)
System.out.print(data_array[i + 1]+"\t");
System.out.println();
}
private final void swap (int i,int j)
{
try {
if (!(i<=size && i>0) || !(j<=size && j>0))
throw (new Exception());
} catch (Exception e) {
System.out.println("swap index error!");
}
int tmp = data_array[i];
data_array[i] = data_array[j];
data_array[j] = tmp;
}
private final boolean IsEmpty()
{
return (0==size);
}
public static void main(String [] args)
{
Heap myheap = new Heap();
myheap.PrintHeap();
Random r = new Random();
for(int i= 0;i<10;i++)
{
myheap.Insert(r.nextInt(maxsize));
myheap.PrintHeap();
}
System.out.println("The sorted data is : ");
while(!myheap.IsEmpty())
{
System.out.print(myheap.Delete()+"\t");
}
System.out.println();
}
}
堆 Java
最新推荐文章于 2023-05-10 23:56:23 发布