数据结构之堆
Posted zhangyang4674
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构之堆相关的知识,希望对你有一定的参考价值。
推排序:
将完全二叉树构造成堆
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 构造堆 class Program static void Main(string[] args) //完全二叉树使用顺序存储的 int[] array = new int[] 34, 88, 56, 90, 85, 33, 24, 68, 94, 77, 57 ; for (int i = array.Length/2; i >=1 ; i--)//对每个堆进行排序 int MaxIndex = i; int temp = i; while(true) int RightChild = temp * 2 + 1; int LiftChild = temp* 2; if(RightChild<=array.Length&&array[RightChild-1]>array[MaxIndex-1])//右节点大就把他放入父节点位置 MaxIndex = RightChild; if(LiftChild<=array.Length&&array[LiftChild-1]>array[MaxIndex-1])//右节点大就把他放入父节点位置 MaxIndex = LiftChild; if(MaxIndex!=temp)//如果节点调换位置,就把调换位置的节点在调节 int value = array[temp-1]; array[temp-1] = array[MaxIndex - 1]; array[MaxIndex - 1] = value; temp = MaxIndex; else break; foreach (var item in array)//将排序好的完全二叉树输出 Console.WriteLine(item); Console.ReadKey();
以上是关于数据结构之堆的主要内容,如果未能解决你的问题,请参考以下文章