一、归并排序


package org.lxh.demo08.b;

class Sort
{
private int[] a;
private int n;
Sort(int n)
{
a=new int[n];
}
Sort(int[] a,int n)
{
this.n=n;
this.a=new int[n];
this.a=a;
}
public void print()
{
for(int i=0;i<n;i++)
System.out.print(a[i]+" ");
}
//合并a[u,...,v-1]和[v,...,t]
public void merge(int a[], int[] des,int u,int v,int t)
{
int i=u;
int j=v;
int k=u;
while(i<=v-1&&j<=t)
{
if(a[i]<=a[j])
des[k++]=a[i++];
else
des[k++]=a[j++];
}
while(i<=v-1)
des[k++]=a[i++];
while(j<=t)
des[k++]=a[j++];
}
public void onepass(int a[],int[] des,int s)
{
int u=0;
int v=s;
int t=2*s-1;
while(n-u>=2*s)
{
merge(a,des,u,v,t);
u+=2*s;
v+=2*s;
t+=2*s;
}
if(n-u>s)
merge(a,des,u,v,n-1);
else
{
System.arraycopy(a,u,des,u,n-u);
/* for(;u<n;u++)
{
des[u]=a[u];
}*/
}
}
public void mergesort()
{
int s=1;
int[] des=new int[n];
while(s<n)
{
onepass(a,des,s);
s=2*s;
if(s>=n)
{
System.arraycopy(des,0,a,0,n);
}
else
{
onepass(des,a,s);
s=2*s;
}
}
des=null;
}
}
public class RunnableTest
{
public static void main(String args[])
{
int[] a={5,8,2,7,1,0,6};
Sort b=new Sort(a,7);
b.mergesort();
b.print();
}
}

排序小结(java版)的更多相关文章

  1. 排序算法Java版,以及各自的复杂度,以及由堆排序产生的top K问题

    常用的排序算法包括: 冒泡排序:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后.最将剩下的N-1个数继续比较,将次大数移至倒数第二.依此规律,直至比较结 ...

  2. 排序算法系列:选择排序算法JAVA版(靠谱、清晰、真实、可用、不罗嗦版)

    在网上搜索算法的博客,发现一个比较悲剧的现象非常普遍: 原理讲不清,混乱 啰嗦 图和文对不上 不可用,甚至代码还出错 我总结一个清晰不罗嗦版: 原理: 从数组头元素索引i开始,寻找后面最小的值(比i位 ...

  3. 常用排序算法--java版

    package com.whw.sortPractice; import java.util.Arrays; public class Sort { /** * 遍历一个数组 * @param sor ...

  4. 高速排序(Java版)

    package com.love.test; import java.util.Scanner; /** * @author huowolf *高速排序实现 *快排是十分优秀的排序算法. *核心:分治 ...

  5. 排序小结(C++版)

    一.快速排序 #include <iostream> using namespace std; int adjust(int a[],int start,int end) { int i, ...

  6. 排序小结(C版)

    一.快速排序(C源码) #include <stdlib.h> #include <stdio.h> int adjust(int a[],int start,int end) ...

  7. 常见的链表排序(Java版)

    上篇博客中讲解了九大内部排序算法,部分算法还提供了代码实现,但是那些代码实现都是基于数组进行排序的,本篇博客就以链表排序实现几种常见的排序算法,以飨读者. 快速排序的链表实现 算法思想:对于一个链表, ...

  8. 打乱式排序的Java版实现

    项目中涉及到对大批量的数据进行打乱式排序,大概原理如下: 输入源数据:1,1,2,3,3,3,4,4 输出结果:   1,2,3,4,1,3,4,3 实现代码如下,采用递归的思想: static &l ...

  9. 排序算法Java版

    选择排序: public static void selectSort(int[]a) { int minIndex=0; int temp=0; if((a==null)||(a.length==0 ...

随机推荐

  1. IIS7的集成模式下如何让自定义的HttpModule不处理静态文件(.html .css .js .jpeg等)请求

    今天将开发好的ASP.NET站点部署到客户的服务器上后,发现了一个非常头疼的问题,那么就是IIS7的应用程序池是集成模式的话,ASP.NET项目中自定义的HttpModule会处理静态文件(.html ...

  2. Together

  3. 删除已经配置的类库和移除CocoaPods[转]

    转自:http://blog.csdn.net/jymn_chen/article/details/19213601 引言 在使用CocoaPods(一)为项目配置第三方类库我们使用CocoaPods ...

  4. linux下cmake编译安装、配置和卸载mysql

    WIN10下虚拟机:VMware workstation 12 PRO 安装 # 1.查看系统版本 [root@vm-xiluhua][/home/xiluhua]$ cat /etc/redhat- ...

  5. MAC: Homebrew(代替yum)安装

    安装    ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"    最新方式请 ...

  6. dynamics_cast<>

    #include <iostream> class A { public: A(){} ~A(){} ;} }; class B:public A { public: B(){} ~B() ...

  7. 亚马逊EC2 ubuntu下安装mysql远程无法连接问题o

    无法远程的原因有很多,我今天遇到的问题是通过navicat无法远程连接我在EC2上创建的实例. 1.通过命令" netstat -an|grep 3306 "检查一下3306端口对 ...

  8. Asp.net 头像的简单实现

    1:创建数据库 Create Table ImageSave ( ID ,), Name ), img image ) 2:上传照片页关键代码 前台: <div> <asp:File ...

  9. [SDN] What is SDN?

    本篇学习笔记写于 Sun Nov 13 15:08:02 2016, 可能有认识不全面的地方. 参考资料为ONF的官方网站中: Software-Defined Networking (SDN) De ...

  10. laravel框架总结(七) -- 数据库操作

      1.使用DB门面进行基本操作 一旦你设置好了数据库连接,就可以使用 DB facade 来进行查找.DB facade 提供每个类型的查找方法:select.update.insert.delet ...