合并排序 java
java 实现合并排序
package How; import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Array;
import java.util.Random; import org.omg.PortableInterceptor.DISCARDING; public class bin_1
{
public static void main(String[] args)
{
try
{
mergesortSort myMergesortSort=new mergesortSort();
myMergesortSort.display();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class mergesortSort
{
int size=6;
int []array;
int []temp;
BufferedWriter fout_1;
BufferedWriter fout_2;
//准备数据
public mergesortSort() throws IOException
{
fout_1=new BufferedWriter(new FileWriter("noOrder.txt"));
fout_2=new BufferedWriter(new FileWriter("inOrder.txt"));
Random random=new Random();
array=new int[size];
this.temp=new int[size];
for(int i=0; i<size; i++)
{
array[i]=random.nextInt(100);
fout_1.write(array[i]+"");
fout_1.newLine();
}
fout_1.flush();
mergesort( 0, size-1);
}
//方便调用
public mergesortSort(int []array, int l, int r ) throws IOException
{
fout_1=new BufferedWriter(new FileWriter("noOrder.txt"));
fout_2=new BufferedWriter(new FileWriter("inOrder.txt"));
this.array=array;
this.temp=new int[l-r+1];
mergesort( l, r);
}
public mergesortSort(int []array) throws IOException
{
fout_1=new BufferedWriter(new FileWriter("noOrder.txt"));
fout_2=new BufferedWriter(new FileWriter("inOrder.txt"));
this.array=array;
this.temp=new int[array.length];
mergesort( 0, array.length-1);
}
public void mergesort(int l, int r)
{
if(l<r)
{
int m=(l+r)/2;
mergesort( l, m);
mergesort( m+1, r);
merge( l, m, r);
}
}
public void merge(int l, int m, int r)
{
int p=l;
int q=m+1;
int k=0;
System.out.println("p="+p);
System.out.println("q="+q);
while(p<=m&&r>=q)
{
if(array[p]<=array[q]) //谁小谁先进
{
temp[k++]=array[p];
p++;
}
else
{
temp[k++]=array[q];
q++;
}
System.out.println(""+array[k]);
}
if(p<=m)
{
for(int i=p; i<=m; i++)
{
temp[k++]=array[i];
}
}
else
{
for(int i=q; i<=r; i++)
{
temp[k++]=array[i];
}
}
//复制 这里比较容易出错
for(int i=0; i<k; i++)
{
array[l++]=temp[i];
}
}
public void display() throws IOException
{ for(int i=0; i<array.length; i++)
{
fout_2.write(""+array[i]);
fout_2.newLine();
}
fout_2.flush();
}
}
运行结果


合并排序 java的更多相关文章
- Java与算法之(11) - 合并排序
天下事,合久必分,分久必合.合并排序的基本思想正是先分再合. 例如对3, 1这个数列排序,首先是分,分为3和1两个数列,然后再合并并排序.合并需要额外的辅助空间,即建立一个两个数列长度之和的空数组用于 ...
- 算法笔记_014:合并排序(Java)
1 问题描述 给定一组数据,使用合并排序得到这组数据的非降序排列. 2 解决方案 2.1 合并排序原理简介 引用自百度百科: 合并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Div ...
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述
算法是在有限步骤内求解某一问题所使用的一组定义明确的规则.通俗点说,就是计算机解题的过程.在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法.前者是推理实现的算法,后者是操作实现的算法. ...
- Java实现合并排序
1 问题描述 给定一组数据,使用合并排序得到这组数据的非降序排列. 2 解决方案 2.1 合并排序原理简介 引用自百度百科: 合并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Div ...
- lintcode:合并排序数组
题目: 合并排序数组 合并两个排序的整数数组A和B变成一个新的数组. 样例 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6] 挑战 你能否优化你的算法,如果 ...
- 希尔排序及希尔排序java代码
原文链接:http://www.orlion.ga/193/ 由上图可看到希尔排序先约定一个间隔(图中是4),然后对0.4.8这个三个位置的数据进行插入排序,然后向右移一位对位置1.5.9进行插入排序 ...
- 用javascript比较快速排序和合并排序的优劣
<script> //用来调用排列方法的类 function arr_sort(arr){ var startTime,endTime; var priv_arr = new Array; ...
- julia文件合并排序.jl
julia文件合并排序.jl """ julia文件合并排序.jl http://bbs.bathome.net/thread-39841-1-1.html 2016年3 ...
- lintcode:合并排序数组 II
题目: 合并排序数组 II 合并两个排序的整数数组A和B变成一个新的数组. 样例 给出A = [1, 2, 3, empty, empty] B = [4,5] 合并之后A将变成[1,2,3,4,5] ...
随机推荐
- MySQL数据库查询中的特殊命令
第一: MySQL的安装 下载MySQL软件,修改安装路径之后 安装数据库MySQL5.7.18 第一步:数据库MySQL5.7.18可以在官网上下载对应的版本,下载地址:http://www.f ...
- cf842D 01字典树|线段树 模板见hdu4825
一般异或问题都可以转换成字典树的问题,,我一开始的想法有点小问题,改一下就好了 下面的代码是逆向建树的,数据量大就不行 /*3 01字典树 根据异或性质,a1!=a2 ==> a1^x1^..^ ...
- Android Studio 打开activity_main.xml不能正常显示
操作系统:Windows 10 x64 IDE:Android Studio 3.2.1 解决方法:http://www.jcodecraeer.com/a/anzhuokaifa/Android_S ...
- C++ Primer 笔记——函数
1.函数内的局部静态对象在程序的执行路径第一次经过对象定义语句的时候初始化,并且直到程序终止才被销毁,在此期间即使对象所在的函数结束执行也不会对它有影响. size_t get_count() { ; ...
- 安装cx_Oracle 6
首先声明,本文是在Linux 环境下进行安装.不涉及Windows 版安装. 一. 了解cx_Oracle 安装要求 要python 通过cx_Oracle 6 操作Oracle 数据库,以下几个条件 ...
- 正则表达式过滤html标签
1.说明:需要使用非贪婪模式 2.示例 过滤所有span标签: var newContent = Regex.Replace(htmlContent, "<span.*?>.*? ...
- Django-model基础
Django-model基础 在Django-ORM中表和类存在映射关系 表名<------------>类名 字段<------------>属性 表记录<------ ...
- python---通过递归和动态规划策略解决找零钱问题
也是常见套路. # coding = utf-8 def rec_mc(coin_value_list, change, know_results): min_coins = change if ch ...
- python--使用队列结构来模拟共享打印机等候时间
按书里的样例抄的. 可以看到,将打印速度由第分钟5页提高到10页之后, 每个学生提交打印任务到打印完成的时间明显缩短. =========================== 在计算机科学实验室里考虑 ...
- python全栈开发day92-day96 Vue总结
-- ES6常用语法 -- var let const -- 模板字符串 -- 反引号 -- ${} -- 箭头函数 -- 普通函数取决于函数最近的调用者 -- 箭头函数取决当前环境 -- 类 -- ...