易截截图软件、单文件、免安装、纯绿色、仅160KB

java实现的递归方法逆序对查找

下面是使用java实现的递归逆序对查找,所谓的逆序对就是在数组A[]中如果 i < j ,并且A[i] > A[j], 则我们说A[i]和A[j]是一对逆序对。如果用普通的算法实现的话,查找的时间复杂度,是O(N*N),使用这里的队规的方式查找的话,时间复杂度是O(N*lgN)
import java.util.Date;
import java.util.Random;
/*
* 使用递归实现的统计数组中的逆序对数量。
*/
public class InversionSearch {

public static void main(String args[])
{
int len = 5;
Date date = new Date();
Random random = new Random(date.getSeconds());
int data[]=new int[len];
for(int i = 0; i < len; i++)
{
data[i]=(int)(random.nextFloat()*100+1);
}
show(data);
int count= inversionSearch(data,1,data.length);
System.out.println("共有逆序对:"+count);
}
private static void show(int[] data)
{
System.out.println("========================");
for(int i = 0; i < data.length; i++)
{
System.out.print(data[i] + " ");
}
System.out.println();
System.out.println("========================");
}

public static int inversionSearch(int[] data,int start,int end)
{
int count=0;
if(end>start){
int pos = (start+end)/2;
int temp1 = inversionSearch(data,start,pos);
int temp2 = inversionSearch(data,pos+1,end);
count = mergeSearch( data,start,pos,end)+temp1+temp2;
}
return count;
}

public static int mergeSearch(int[] data,int start,int pos,int end)
{
int count=0;
for(int i=pos; i<end; i++)
{
for(int j=start-1; j<pos; j++)
{
if(data[i]<data[j])
{
count++;
}
}
}
return count;
}
}


相关文档:

Java SE 接口、抽象类

package demo;
interface Runner{
 int ID=1;
 void run();
 void fly();
}
abstract class AI implements Runner{
 public void run(){
  System.out.println("I am running");
 }
 public void bb(int x,int y){
  System.out.println((x+y));
 }
& ......

java GB转 UTF 8字符

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class GB2UTF
{
 public static String GBK2Unicode(String str)
 {
  StringBuffer result = new StringBuffer();
  for (int i = 0; i < str.length(); i++)
 &n ......

Java SE 多线程 线程生命周期

package thread;
class ThreadTest4 implements Runnable{
 private boolean flag=true;
 public void stopMe(){
  flag=false;
 }
 public void run() {
  while (flag){
   System.out.println(Thread.currentThread().getName()+" is running ");
&nbs ......

Java泛型九诫

1、不可以用一个本地类型(如int   float)来替换泛型
2、运行时类型检查,不同类型的泛型类是等价的(Pair<String>与Pair<Employee>是属于同一个类型Pair),
     这一点要特别注意,即如果a instanceof Pair<String>==true的话,并不代表a.getFirst()的返回值是一个S ......

十三种Java开发工具

1、JDK (Java Development Kit)
  SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK)。开发人员和最终用户可以利用这个工具来开发java程序。
  JDK简单易学,可以通过任何文本编辑器(如:Windows 记事本、UltrEdit、Editplus、FrontPage以及dreamweaver等)编写Java源文件,然 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号