HeapSort (堆排序,可运行)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
using namespace std;
void Max_Heapfiy(int *array,int i,int heap_size)
{
int left_child = 2 * i;
int right_child = 2 * i + 1;
int largest = 0;
if(left_child <= heap_size && array[left_child] > array[i])
largest = left_child;
else largest = i;
if(right_child <= heap_size && array[right_child] > array[largest])
largest = right_child;
if(largest != i)
{
int temp = array[i];
array[i] = array[largest];
array[largest] = temp;
Max_Heapfiy(array,largest,heap_size);
}
}
void Build_Max_Heap(int *array,int heap_size)
{
int index = heap_size/2;
for(int i = index; i >=1; i --)
{
Max_Heapfiy(array,i,heap_size);
}
}
void Heap_Sort(int *array,int heap_size)
{
for(int i = 1; i < 11; i ++)
{
cout<
cout<
if(heap_size > 1)
{
int temp = array[1];
array[1] = array[heap_size];
array[heap_size--] = temp;
Build_Max_Heap(array,heap_size);
Heap_Sort(array,heap_size);
}
}
void main()
{
int array[11] = {-1,16,4,10,14,7,9,3,2,8,1};
Heap_Sort(array,10);
for(int i = 1; i < 11; i ++)
{
cout<
cout<