堆排序
来源:互联网 发布:sqlserver触发器语法 编辑:程序博客网 时间:2024/05/18 16:39
如果集合k={K0 ,K1 ,K2,。。。。。,Kn-1,},将其按完全二叉树的顺序存储方式存放在一个维数组中,并且满足
Ki < = K2i+1 , Ki < = K2i+2 其形式就是根结点小于其子结点,这种形式称为小根堆,当然根结点大于其子结点,则为大根堆
创建一个小根堆,开始的形式为数组 A[8]={53,17,78,9,45,65,87,23};
树的形式为
#include "stdafx.h"#include <stdio.h>#include <stdlib.h>typedef struct minHeap{int heap[40];int currentSize;};void siftDown(minHeap &H ,int i,int m){int j=0;int temp = H.heap[i];for( j=2*i+1 ; j<=m; j=2*j+1 ){if(j<m&&H.heap[j]>H.heap[j+1])j++;if(H.heap[j]<temp){H.heap[i] =H.heap[j];i = j;}else break;}H.heap[i] = temp;}void createMinHeap(minHeap &H , int A[] ,int n){ int i=0;for(i = 0;i<n;i++){H.heap[i] = A[i];}H.currentSize = n;int currentPos = (n-2)/2;while(currentPos>=0){siftDown(H,currentPos,H.currentSize-1);currentPos-- ;}}void main(){minHeap H;int i=0;int A[8]={53,17,78,9,45,65,87,23};createMinHeap(H , A ,8);for(i=0;i<8;i++){printf("%d \n " ,H.heap[i]);}}程序运行后,形成小根堆
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- 精细审计
- 母函数
- 我的微信公众平台帐号,大家来关注下吧。谢谢!
- myeclipse快捷键设置
- 安卓杂记
- 堆排序
- 段\区\块
- poj 1986 Distance Queries (LCA)
- 归档
- mongodb初识
- 备份:防止代码变质的思考与方法
- Leetcode: Length of Last Word
- SQL/PLSQL基础
- [POJ]提交代码时的注意事项