//堆排序,小顶堆
void Heap(int heap[],int i,int size)
{
int l,r,temp,min;
l = 2*i;
r = 2*i+1;
if(l<size&&heap[l-1]<heap[i-1])
min = l;
else
min = i;
if(r<size&&heap[r-1]<heap[min-1])
min = r;
if(min != i)
{
temp = heap[min-1];
heap[min-1] = heap[i-1];
heap[i-1] = temp;
Heap(heap,min,size);
}
}
void createHeap_And_Sort(int heap[],int n)
{
int m = n/2,size = n,temp;
for(int j = m;j>0;j--)
Heap(heap,j,size);
while(size>0)
{
temp = heap[size-1];
heap[size-1] = heap[0];
heap[0] = temp;
size--;
Heap(heap,1,size);
}
}
堆排序
最新推荐文章于 2024-09-04 23:05:17 发布