C#中堆排序记录
来源:互联网 发布:奶奶踩死孙女知乎 编辑:程序博客网 时间:2024/05/28 14:57
堆排序的主要原理就是利用堆的特点,首先生成最大堆,然后每次取堆的root和最后一个叶子交换,剔除最后叶子。然后再次生成最大堆,循环。
/// <summary>
/// 堆排序
/// </summary>
/// <param name="Myarray"></param>
/// <returns></returns>
private int[] HeapSotr(int[] Myarray)
{
int i;
HeadAdjust(Myarray, 0, Myarray.Length-1);
for (i = Myarray.Length-1; i > 0; i--)
{
Swap(Myarray, 0, i);
HeadAdjust(Myarray, 0, i-1);
}
return Myarray;
}
/// <summary>
/// 生成堆
/// </summary>
/// <param name="Myarray"></param>
/// <param name="s"></param>
/// <param name="m"></param>
private void HeadAdjust(int[] Myarray, int low, int high)
{
if ((low < high) && (high <Myarray .Length))
{
int j = 0;
int temp = 0;
int k = 0;
for(int i=high/2;i>=low;i--)
{
k = i;
j = 2 * k+1 ;
temp = Myarray[i];
while (j+1 <=high)
{
if (Myarray[j] < Myarray[j + 1])
++j;
if (temp < Myarray[j])
{
Myarray[k] = Myarray[j];
k = j;
j = 2 * k+1 ;
}
else
{
j = high + 1;
}
Myarray[k] = temp;
}
}
}
}
/// <summary>
/// 交换值
/// </summary>
/// <param name="Myarray"></param>
/// <param name="i"></param>
/// <param name="j"></param>
private void Swap(int[] Myarray, int i, int j)
{
int temp = Myarray[i];
Myarray[i] = Myarray[j];
Myarray[j] = temp;
}
- C#中堆排序记录
- 算法记录:堆排序
- 堆排序 C#
- C#堆排序
- C# 堆排序
- 堆排序C#实现
- C#实现堆排序
- 快排,堆排序,基数排序手写记录
- 记录一下自己实现的堆排序
- 关于堆排序建堆时间以及堆排序的分析之暑假学习记录
- 堆排序,Dijikstra算法和C#
- 堆排序算法(C#实现)
- 堆排序在C#中的实现
- 堆排序——C#实现
- Java中PriorityQueue的排序,堆排序
- 堆排序、中序排序算法实现
- Java中PriorityQueue的排序,堆排序
- C# 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序
- Android开机应用程序定制
- 个人找工作中的软件测试面试题目收集(一)
- Android多媒体开发【12】-- android中OpenMax的实现【3】OMX中主要成员
- VS2010中出现无法嵌入互操作类型
- sql语句的输出xml配置
- C#中堆排序记录
- 我们要掌控什么——怎样应对糟糕的老板
- Android获取屏幕分辨率及DisplayMetrics简介
- struts学习笔记
- QSqlDatabase类学习笔记
- 百度HI QQ和MSN 阿里旺旺贸易通MSN在线客服在线聊天代码
- 私人珍藏网址
- How To Create Database In MongoDB
- 初识RMI