码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构之堆

时间:2019-08-09 13:48:54      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:好的   val   item   顺序存储   value   OLE   task   reac   htc   

 

 

技术图片

 

推排序:技术图片

将完全二叉树构造成堆

 

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();

        }
    }
}

 

数据结构之堆

标签:好的   val   item   顺序存储   value   OLE   task   reac   htc   

原文地址:https://www.cnblogs.com/zhangyang4674/p/11325387.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!