C# 归并排序
来源:互联网 发布:阿里云邮箱客服400 编辑:程序博客网 时间:2024/05/01 06:26
归并排序:
定义:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。
Recursion Way:
public int[] Merge(int[] left, int[] right)
{
int[] result = new int[left.Length + right.Length];
int leftIndex = 0;
int rightIndex = 0;
int resultIndex = 0;
while (leftIndex < left.Length && rightIndex < right.Length)
{
if (left[leftIndex] < right[rightIndex])
{
result[resultIndex++] = left[leftIndex++];
}
else
{
result[resultIndex++] = right[rightIndex++];
}
}
while (leftIndex < left.Length)
{
result[resultIndex++] = left[leftIndex++];
}
while (rightIndex < right.Length)
{
result[resultIndex++] = right[rightIndex++];
}
return result;
}
int[] MergeSort(int[] data)
{
if (null == data || data.Length <= 1)
{
return data;
}
int middle = data.Length >> 1;
int[] left = new int[middle];
int[] right = new int[data.Length - middle];
int[] result = new int[data.Length];
for (int i = 0; i < data.Length; i++)
{
if (i < middle)
{
left[i] = data[i];
}
else
{
right[i - middle] = data[i];
}
}
left = MergeSort(left);
right = MergeSort(right);
result = Merge(left, right);
return result;
}
- C#版归并排序
- C# 归并排序
- c#归并排序
- C#归并排序
- C#实现归并排序
- C# 归并排序
- C#实现归并排序
- C# 两路归并排序
- 归并排序的C#实现
- C#中实现两路归并排序
- 归并排序算法MergeSort in C#
- C#下的归并排序算法实现
- 归并排序算法(C#实现)
- 归并排序——C#实现
- 归并排序-归并排序
- C# 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序
- 归并和归并排序
- 归并与归并排序
- 可变参数 stdarg (二)
- cakephp菜鸟笔记3
- 获取本机IP
- cakephp菜鸟笔记4
- 苦逼IT男必然生女?
- C# 归并排序
- Trust yourself, bear your responsibility and become stronger
- 言论
- cakephp菜鸟笔记-分页
- 不求甚解1
- 写数据库时的class.forName()方法解惑
- The type org.springframework.orm.hibernate3.support.HibernateDaoSupport cannot be resolved. It is in
- Silverlight WorkFlow画图--介绍
- 选择电影