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的更多相关文章

  1. Java与算法之(11) - 合并排序

    天下事,合久必分,分久必合.合并排序的基本思想正是先分再合. 例如对3, 1这个数列排序,首先是分,分为3和1两个数列,然后再合并并排序.合并需要额外的辅助空间,即建立一个两个数列长度之和的空数组用于 ...

  2. 算法笔记_014:合并排序(Java)

    1 问题描述 给定一组数据,使用合并排序得到这组数据的非降序排列. 2 解决方案 2.1 合并排序原理简介 引用自百度百科: 合并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Div ...

  3. java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述

    算法是在有限步骤内求解某一问题所使用的一组定义明确的规则.通俗点说,就是计算机解题的过程.在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法.前者是推理实现的算法,后者是操作实现的算法. ...

  4. Java实现合并排序

    1 问题描述 给定一组数据,使用合并排序得到这组数据的非降序排列. 2 解决方案 2.1 合并排序原理简介 引用自百度百科: 合并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Div ...

  5. lintcode:合并排序数组

    题目: 合并排序数组 合并两个排序的整数数组A和B变成一个新的数组. 样例 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6] 挑战 你能否优化你的算法,如果 ...

  6. 希尔排序及希尔排序java代码

    原文链接:http://www.orlion.ga/193/ 由上图可看到希尔排序先约定一个间隔(图中是4),然后对0.4.8这个三个位置的数据进行插入排序,然后向右移一位对位置1.5.9进行插入排序 ...

  7. 用javascript比较快速排序和合并排序的优劣

    <script> //用来调用排列方法的类 function arr_sort(arr){ var startTime,endTime; var priv_arr = new Array; ...

  8. julia文件合并排序.jl

    julia文件合并排序.jl """ julia文件合并排序.jl http://bbs.bathome.net/thread-39841-1-1.html 2016年3 ...

  9. lintcode:合并排序数组 II

    题目: 合并排序数组 II 合并两个排序的整数数组A和B变成一个新的数组. 样例 给出A = [1, 2, 3, empty, empty] B = [4,5] 合并之后A将变成[1,2,3,4,5] ...

随机推荐

  1. 基于Manhattan最小生成树的莫队算法

    点u,v的Manhattan距离:distance(u,v)= |x2-x1|+|y2-y1| Manhattan最小生成树:边权值为两个点Manhattan距离的最小生成树. 普通算法:prim复杂 ...

  2. Ubuntu 进入、退出命令行的快捷键

    进入: Ctrl+Alt+F1 退出: Ctrl+Alt+F7(或者 Alt+F7) 进入命令行窗口:Ctrl+Alt+T

  3. UEditor黑白名单配置

    在网上找了很多,都不对.自己尝试,代码如下: 在new UEditor之前加上: Object.assign(window.UEDITOR_CONFIG.whitList, { filling: [' ...

  4. jquery表单提交的新写法

    $('form').submit()和$("form").submit() 这两种都可以实现form表单的提交 jquery中$('form').submit()和$(" ...

  5. 浏览器LocalStroage使用

    http://www.cnblogs.com/st-leslie/p/5617130.html

  6. DBEntityEntry类

    DBEntityEntry是一个重要的类,可用于检索有关实体的各种信息.您可以使用DBContext的Entry方法获取特定实体的DBEntityEntry实例. DBEntityEntry允许您访问 ...

  7. Linux-GLIBCXX版本过低导致编译错误--version `GLIBCXX_3.4.20' not found

    最近在CentOS6.2上安装protobuf2.4.1,编译的时候出现如下错误: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not fo ...

  8. 3步实现ssh面密码登录

    1.上次本机的公钥和私钥 [root@vicweb ~]#ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in ...

  9. Codeforces 868F Yet Another Minimization Problem 决策单调性 (看题解)

    Yet Another Minimization Problem dp方程我们很容易能得出, f[ i ] = min(g[ j ] + w( j + 1, i )). 然后感觉就根本不能优化. 然后 ...

  10. u盘系统安装步骤

    应今天Webcast听众的要求,写一写从U盘安装Windows 7的必要步骤.步骤一:准备U盘   把容量在4GB以上的U盘插入计算机,在命令行运行下列命令,完成U盘的分区格式化.   diskpar ...