堆积排序
来源:互联网 发布:淘宝卖家店铺网址 编辑:程序博客网 时间:2024/06/10 00:29
// test__file.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <cstdio>
#include <cstdlib>
#include <cmath>
const int HEAP_SIZE = 13; //堆積樹大小
int parent(int);
int left(int);
int right(int);
void Max_Heapify(int [], int, int);
void Build_Max_Heap(int []);
void print(int []);
void HeapSort(int [], int);
/*父結點*/
int parent(int i)
{
return (int)floor(long double(i / 2));
}
/*左子結點*/
int left(int i)
{
return 2 * i;
}
/*右子結點*/
int right(int i)
{
return (2 * i + 1);
}
/*單一子結點最大堆積樹調整*/
void Max_Heapify(int A[], int i, int heap_size)
{
int l = left(i);
int r = right(i);
int largest;
int temp;
if(l < heap_size && A[l] > A[i])
{
largest = l;
}
else
{
largest = i;
}
if(r < heap_size && A[r] > A[largest])
{
largest = r;
}
if(largest != i)
{
temp = A[i];
A[i] = A[largest];
A[largest] = temp;
Max_Heapify(A, largest, heap_size);
}
}
/*建立最大堆積樹*/
void Build_Max_Heap(int A[])
{
for(int i = HEAP_SIZE/2; i >= 0; i--)
{
Max_Heapify(A, i, HEAP_SIZE);
}
}
/*印出樹狀結構*/
void print(int A[])
{
for(int i = 0; i < HEAP_SIZE;i++)
{
printf("%d ", A[i]);
}
printf("\n");
}
/*堆積排序程序碼*/
void HeapSort(int A[], int heap_size)
{
int temp;
Build_Max_Heap(A);
for(int i = heap_size - 1; i >= 1; i--)
{
temp = A[0];
A[0] = A[i];
A[i] = temp;
heap_size = heap_size - 1;
Max_Heapify(A, 0, heap_size);
}
print(A);
}
/*輸入資料並做堆積排序*/
int main(int argc, char* argv[])
{
int A[HEAP_SIZE] = {19, 1, 10, 14, 16, 4, 7, 9, 3, 2, 8, 5, 11};
HeapSort(A, HEAP_SIZE);
system("pause");
return 0;
}
- 堆积排序
- 堆积排序,scala实现
- 堆积排序(HeapSort) - 改良的选择排序
- 堆积排序-堆排序-heap sort
- 大顶堆积排序--Java版
- 基于堆积树的选择排序(Heap排序法)
- 堆积方块
- Rabbitmq 消息堆积测试
- 3.6 堆积柱形图
- 3.7 百分比堆积柱形图
- 4.3堆积面积图
- RocketMQ消息堆积判断
- 关键字密度或关键字堆积
- 堆积未读的书本
- 今天发现rabbitMQ消息堆积
- 使用seaborn画堆积柱状图
- paraview可视化小球堆积系统
- Kafka消息队列堆积问题
- Java串口通信详解
- Dom4j下载及使用Dom4j读写XML简介
- asp.net mvc3 配置自定义错误页
- 浅谈BMP图像文件的内部结构(长期研究的总结)
- poj 1887 Testing the CATCHER dp 最大降序
- 堆积排序
- 题目分类
- 动态调用动态语言的Java脚本API
- C#,String.Format()
- 如何设置用例的场景/事件流(UML2中用例框图的场景设置)
- Android 自带 apk 的查看与删除
- oracle透明数据加密技术(TDE)
- linux下C语言的学习
- Hibernate数据查询