C#归并排序
来源:互联网 发布:cacti有数据不出图 编辑:程序博客网 时间:2024/05/21 07:52
/// <summary>
/// 归并排序
/// </summary>
/// <param name="Myarray"></param>
/// <returns></returns>
private int[] MergerSotr(int[] Myarray)
{
int len=1;
while (len < Myarray.Length)
{
Merge(Myarray, len);
len *= 2;
}
return Myarray;
}
/// <summary>
/// 归并操作
/// </summary>
/// <param name="Myarray"></param>
/// <param name="len"></param>
private void Merge(int[] Myarray, int len)
{
int m = 0;
int l1 = 0;
int h1, l2, h2;
int j = 0;
int i = 0;
int[] tmp = new int[Myarray.Length];
while (l1 + len < Myarray.Length)
{
l2 = l1 + len;
h1 = l2 - 1;
h2 = (l2 + len - 1) < Myarray.Length ? l2 + len - 1 : Myarray.Length - 1;
j = l2;
i = l1;
//比较两个序列的最小值并赋值给临时表,同时那个拥有最小值得序列番号自加,依次比较直至番号超出,取出最小的几个值。
while ((i <= h1) && (j <= h2))
{
if (Myarray[i] < Myarray[j])
tmp[m++] = Myarray[i++];
else
tmp[m++] = Myarray[j++];
}
//如果没有排序完,继续。
while (i <= h1)
{
tmp[m++] = Myarray[i++];
}
while (j <= h2)
{
tmp[m++] = Myarray[j++];
}
l1 = h2 + 1;
}
i = l1;
while (i < Myarray.Length)
{
tmp[m++] = Myarray[i++];
}
for (i = 0; i < Myarray.Length; i++)
{
Myarray[i] = tmp[i];
}
}
- C#版归并排序
- C# 归并排序
- c#归并排序
- C#归并排序
- C#实现归并排序
- C# 归并排序
- C#实现归并排序
- C# 两路归并排序
- 归并排序的C#实现
- C#中实现两路归并排序
- 归并排序算法MergeSort in C#
- C#下的归并排序算法实现
- 归并排序算法(C#实现)
- 归并排序——C#实现
- 归并排序-归并排序
- C# 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序
- 归并和归并排序
- 归并与归并排序
- 《大话设计模式》部分模式总结(二)
- A. Exams
- 你应该知道的10种软件工具
- 用EXCEL完成GPS坐标转换的简易方法
- 解决 PHP Mysql 和 UTF8的问题
- C#归并排序
- 在C++ 程序中调用被C编译器编译后的函数,为什么要加extern “C”?
- Android客户端与PC服务器实现Socket通信
- 免费的项目托管网站
- android中dip、dp、px、sp和屏幕密度
- KiFastCallEntry() 机制分析
- Chrome扩展程序:Remove Google Redirects
- va_list,可变参数的使用
- 深圳高新区人才服务中心(交档案管理费。。。)