HeapSort的C#实现

原创 2007年09月28日 00:08:00
把算法导论第六章的堆排序用C#实现了一下。 把MaxHeapify用迭代实现了。发现几个问题:
第一呢,算法导论中假设内部数组是从1开始的,结果左右结点的算法和从0开始的数组实际上是不同的。
第二呢,在改迭代的时候,粗心把循环变量写错了。结果调了很久,郁闷死。

并且加入优先级队列的功能,包括Maximum, ExtractMax, IncreaseKey,  Insert, Delete子过程
下面是实现的代码:
namespace FengChen.Practices
{
    
public class Chapter6
    
{
        
public class MaxHeap
        
{
            
private Int32[] m_Array;
            
private Int32 m_Size;

            
heap tree node navigation

            
public Int32 Size get return m_Size; } }

            
public MaxHeap(Int32 size)
            
{
                m_Array 
= new Int32[size];
                m_Size 
= Size;

                BuildMaxHeap();
            }


            
public MaxHeap(Int32[] inputArray)
            
{
                
if (inputArray == null)
                    
throw new ArgumentNullException("inputArray""The input Array cannot be null!");
                m_Array 
= inputArray;
                m_Size 
= inputArray.Length;

                BuildMaxHeap();
            }


            
public String Show()
            
{
                
// List the current heap elements
                return Common.ListTheArray(m_Array);
            }


            
6.2 Maintaining the heap property

            
6.3 Building a max heap

            
Veriry a max heap

            
6.4 The heapsort algorithm(Sort to non-increasing order)

            
6.5 Priority queues
        }

    }

}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++、C#、java算法学习日记06----堆排序思想(HeapSort)

上一篇所学的 希尔排序  是对插入排序的一种高效优化,而堆排序则是对选择排序的一种高效优化,也属于选择排序的一种,所以他的基本思想同 直接选择排序  一样也就是每次从数列中选出最大或最小的放...
  • HC666
  • HC666
  • 2015-11-04 21:44
  • 905

heapsort C语言实现

C++、C#、java算法学习日记07----堆排序(HeapSort)

根据上一篇 堆排序思想   这一篇我们用C++、C#、java 代码来实现它,要求对10000个随机数进行升序排列。 C++实例: #include #include #include ...
  • HC666
  • HC666
  • 2015-11-05 22:47
  • 546

Java堆排序(HeapSort)算法实现

算法实现public class MaxHeap { public static int left(int i){ return 2*i; } public s...

算法学习 - 堆排序 ( HeapSort ) C++实现

HeapSort 堆排序的原理比较简单,首先明白优先队列的二叉堆,还有它的插入和删除操作就可以了,不懂的话,请看我之前的一篇文章:优先队列的二叉堆实现。 排序操作分两步: 第一步构造...

HeapSort堆排序Java实现图文代码详解

堆排序(Heapsort)堆积树设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素。 排序图如下:(gif来自维基百科) 堆排序的过程就是首先构建大根堆,然后对顶元素(及最大元素)与最...

HeapSort——堆排序实现(算法类)

#ifndef _HEAP_SORT_H_#define _HEAP_SORT_H_#define INC_HEAP_SIZE 10typedef int* Heap_Data;typedef str...

heapsort(堆排序)的代码实现

LZ还是在Qt上进行编译的。#include #include #include #include #include using namespace std;template class H...

HeapSort 堆排序 基于伪代码实现

HeapSort 堆排序 基于伪代码实现
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)