简单的归并排序—Java实现
来源:互联网 发布:origin论文作图软件 编辑:程序博客网 时间:2024/04/27 23:25
public class MergeSort
{
public static void merge(int[] a, int p, int q, int r)
{
int n1 = q - p + 1;
int n2 = r - q;
int[] L = new int[n1];
int[] R = new int[n2];
for (int i = 0; i < n1; ++i)
{
L[i] = a[p+i];
}
for (int j = 0; j < n2; ++j)
{
R[j] = a[q+j+1];
}
int i = 0;
int j = 0;
int k = p;
while (i < n1 && j < n2)
{
if (L[i] < R[j])
{
a[k++] = L[i++];
}
else {
a[k++] = R[j++];
}
}
while (i < n1)
{
a[k++] = L[i++];
}
while (j < n2)
{
a[k++] = R[j++];
}
}
public static void mergeSort(int[] a, int p, int r)
{
if (p < r)
{
int q = (p + r) / 2;
mergeSort(a, p, q);
mergeSort(a, q+1, r);
merge(a, p, q, r);
}
}
public static void main(String[] args)
{
int[] a = {9, 6, 1, 2, 8, 5, 7, 4};
mergeSort(a, 0, a.length-1);
for (int tmp : a)
{
System.out.println(tmp);
}
}
}
{
public static void merge(int[] a, int p, int q, int r)
{
int n1 = q - p + 1;
int n2 = r - q;
int[] L = new int[n1];
int[] R = new int[n2];
for (int i = 0; i < n1; ++i)
{
L[i] = a[p+i];
}
for (int j = 0; j < n2; ++j)
{
R[j] = a[q+j+1];
}
int i = 0;
int j = 0;
int k = p;
while (i < n1 && j < n2)
{
if (L[i] < R[j])
{
a[k++] = L[i++];
}
else {
a[k++] = R[j++];
}
}
while (i < n1)
{
a[k++] = L[i++];
}
while (j < n2)
{
a[k++] = R[j++];
}
}
public static void mergeSort(int[] a, int p, int r)
{
if (p < r)
{
int q = (p + r) / 2;
mergeSort(a, p, q);
mergeSort(a, q+1, r);
merge(a, p, q, r);
}
}
public static void main(String[] args)
{
int[] a = {9, 6, 1, 2, 8, 5, 7, 4};
mergeSort(a, 0, a.length-1);
for (int tmp : a)
{
System.out.println(tmp);
}
}
}
0 0
- 简单的归并排序—Java实现
- 归并排序 一个简单的java实现
- 归并排序的简单实现
- 归并排序的简单实现
- java实现简单排序算法:归并排序
- java实现的归并排序
- 归并排序的java实现
- 归并排序的Java实现
- 归并排序的java实现
- 归并排序的java实现
- 归并排序的java实现
- 归并排序的java实现
- Java实现的归并排序
- Java归并排序的实现
- 归并排序的Java实现
- 归并排序(简单实现)
- 归并排序--简单实现
- 归并排序—java实现
- iOS开发网络篇—JSON数据的解析
- 最小路径覆盖问题值得注意的地方
- Android监听外部存储设备的状态(SD卡、U盘等等)
- 【JAVA实现】朴素贝叶斯分类算法
- Mongodb学习笔记三、使用asp.net在Mongodb中存储和读取图片文件
- 简单的归并排序—Java实现
- OleDbDataAdapter.update更新数据成功,但数据没有变化
- linux下的init六种运行模式
- MySQL排序limit出现的问题(已解决)
- CentOS “/lib64/libc.so.6: version `GLIBC_2.14′ not found”系统glibc版本太低
- drbd备忘
- 请求页面的重定向(302)原理图
- (hdu step 6.3.3)Air Raid(最小路径覆盖:求用最少边把所有的顶点都覆盖)
- 深入研究java.lang.Object类