堆支持的操作:
1.插入一个数
2.求集合当中的最小值
3.删除最小值
4.删除任意一个元素
5.修改任意一个操作
import java.util.Scanner;
public class HeapSort{
//堆排序
static int N = 10010;
static int [] h = new int[N];
static int size = 0;
static void down(int u){
int x = u;
if(u*2<=size&&h[u*2]<h[x]) x = u*2;
if(u*2+1<=size&&h[u*2+1]<h[x]) x = u*2+1;
if(x!=u){
swap(x,u);
down(x);
}
}
static void swap(int u,int x){
int temp = h[u];
h[u] = h[x];
h[x] = temp;
}
static void up(int x){
while(x/2>=1&&h[x/2]>h[x]){
swap(x/2,x);
x = x /2;
}
}
heap[++size] = x;up(size); //插入一个数
heap[1]; //求最小值
heap[1] = heap[size];size–;down(1); //删除最小值
heap[k] = heap[size];size–;down(k);up(k); //删除任意一个元素
heap[k] = x;down(k);up[k]; //修改任意一个元素