一、归并排序


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. bootstrap 下拉菜单不显示的解决办法

    bootstrap 下拉菜单不显示,最后改成如下正常显示: <div class="btn-group open"> <ul class="dropdo ...

  2. static const vs. extern const

    在实现文件(.m文件)中使用static const来定义“只在编译单元内可见的常量”(只在.m文件内可见),由于此类常量不在全局符号表中,所以无须为其名称加类名前缀(一般以k开头). 在头文件中使用 ...

  3. JVM监控与调优

    目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例     转:http://www.cnblogs.com/zhguang/p/java-jvm-gc.html光说不练假把式,学习J ...

  4. Python基础第二篇

    一.三元运算 if True: name='a' else: name='b' #上面的代码用三元运算表示: name="a" if True else "b" ...

  5. quick cocos2dx lua 内存释放

    前言 对于内存的优化,网上有很多例子和教程.总体来说,就那么几种解决方案,在最后我会简单提下,这里先说下在quick中,对于图片的处理. 1.查看内存调试信息 对于quick框架的了解,我们可以参考\ ...

  6. HDU 5686:2016"百度之星" - 资格赛 Problem B

    原文链接:https://www.dreamwings.cn/hdu5686/2645.html Problem B Time Limit: 2000/1000 MS (Java/Others)    ...

  7. 車(rook)

    [题目分析] JustPenz:我们假设n>m(不大于就交换),那最多能摆m个,所以会有(n-m)个空白,我们把这些空白插入到n中,答案就是C(n,n-m)=C(n,m);数据范围比较大,我们就 ...

  8. hdu 3887 Counting Offspring dfs序+树状数组

    Counting Offspring Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  9. 不支持关键字“metadata”问题的解决方法

    不支持关键字“metadata”问题的解决方法 原来的语句: metadata=res://*/Models.CallCenterEntities2.0.csdl|res://*/Models.Cal ...

  10. Model Binding

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...