简单算法--归并排序
来源:互联网 发布:程序员技术学习 编辑:程序博客网 时间:2024/05/16 16:12
public static int mgSort(int data[],int m,int n){
if(m>=n){
return 0;
}else{
mgSort(data,m,(m+n)/2);
mgSort(data,(m+n)/2+1,n);
merge(data,m,n,(m+n)/2);
return 0;
}
}
//合并两个有序数组
public static void merge(int data[],int m,int n,int k){
int temp[] = new int[n-m+1];
int i=m,j=k+1;
int index=0;
while(i<=k||j<=n){
//第一个数组已经结束
if(i == k+1){
temp[index]=data[j];
j++;
index++;
continue;
}
//第二个数组已经结束
if(j==n+1){
temp[index]=data[i];
i++;
index++;
continue;
}
//两个数组都没有结束
if(data[i]<data[j]){
temp[index]=data[i];
i++;
index++;
}else{
temp[index]=data[j];
j++;
index++;
}
}
//将排好序的值赋给原数组
for(int p=0;p<n-m+1;p++){
data[m+p] = temp[p];
}
}
if(m>=n){
return 0;
}else{
mgSort(data,m,(m+n)/2);
mgSort(data,(m+n)/2+1,n);
merge(data,m,n,(m+n)/2);
return 0;
}
}
//合并两个有序数组
public static void merge(int data[],int m,int n,int k){
int temp[] = new int[n-m+1];
int i=m,j=k+1;
int index=0;
while(i<=k||j<=n){
//第一个数组已经结束
if(i == k+1){
temp[index]=data[j];
j++;
index++;
continue;
}
//第二个数组已经结束
if(j==n+1){
temp[index]=data[i];
i++;
index++;
continue;
}
//两个数组都没有结束
if(data[i]<data[j]){
temp[index]=data[i];
i++;
index++;
}else{
temp[index]=data[j];
j++;
index++;
}
}
//将排好序的值赋给原数组
for(int p=0;p<n-m+1;p++){
data[m+p] = temp[p];
}
}
- 简单算法--归并排序
- 归并排序的简单算法
- java实现简单排序算法:归并排序
- 排序:简单排序-归并
- 简单排序算法实现——归并排序
- 排序算法-归并排序
- 排序算法------归并排序
- 排序算法-归并排序
- 排序算法---归并排序
- 排序算法--归并排序
- 排序算法--归并排序
- 排序算法-归并排序
- 排序算法--归并排序
- 排序算法--归并排序
- 排序算法:归并排序
- 排序算法-归并排序
- 排序算法:归并排序
- 【排序算法】归并排序
- asp.net获取本地IIS上绑定的网站的信息
- poj1581
- SourceAnywhere发展历程回顾
- CSS中元素的边框border属性
- 【代码真相】函数调用 堆栈 (转载) 2011-12-5 15:33
- 简单算法--归并排序
- A Reusable Class to Draw a Simple Graph
- C#splitter拖动面板,实现个性拖动
- 代码区(别人写的一个测试用例) 2011-12-9 14:50
- Mac & iOS开发常见错误代码对照表
- 2013年将成手机平板之年 华为中兴纷纷参战(转)
- IC卡学习笔记(四)
- 命令行简介
- 栈区,堆区,全局区,文字常量区,程序代码区 的一些解释(转自网上) 2011-12-9 15:03