java实现的归并排序
一下是java实现的有一个归并排序,自己发现自己的基础功太差了,所以最近开始学习算法,好好的联系每一算法,各位大神不要见笑,写的有错的地方希望能够指出来谢谢哈:
package sort;
import java.util.Date;
import java.util.Random;
/*
* 归并排序
*/
public class MergeSort {
public static void main(String args[])
{
int len = 10;
Date date = new Date();
Random random = new Random(date.getSeconds());
//System.out.println(3/2);
int data[]=new int[len];
for(int i = 0; i < len; i++)
{
data[i]=(int)(random.nextFloat()*100+1);
}
System.out.println("Merge sort:");
show(data);
mergeSort(data,1,data.length);
show(data);
}
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("========================");
}
/*
* start从1开始,end为data的长度
*/
private static void mergeSort(int[] data,int start, int end)
{
if(end>start)
{
int pos=(start+end)/2;
mergeSort(data,start,pos);
mergeSort(data,pos+1,end);
merge2(data,start,pos,end);
}
}
private static void merge(int[] data,int start, int pos, int end)
{
int len1 = pos-start+1;
int len2 = end-pos;
int A[] = new int[len1+1];
int B[] = new int[len2+1];
for(int i=0; i<len1; i++)
{
A[i] = data[i+start-1];
}
A[len1] = Integer.MAX_VALUE;
for(int i=0; i<len2; i++)
{
B[i]=data[i+pos];
}
B[len2] = Integer.MAX_VALUE;
int m=0,n=0;
for(int i=start-1; i<end; i++)
{
if(A[m]>B[n])
{
data[i] = B[n];
n++;
}
else
{
data[i] = A[m];
m++;
}
}
}
private static void merge2(int[] data,int start, int pos, int end)
{
int len1 = pos-start+1;
int len2 = end-pos;
int A[] = new int[len1];
int B[] = new int[len2];
for(
相关文档:
线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Ha ......
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 ......
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实现的迭代版的递归版的插入排序。
package sort;
import java.util.Date;
import java.util.Random;
/*
* 插入排序
*/
public class InsertSort{
public static void main(String args[])
{
int len = 20;
Date date = new Date();
Random random = new Random(date.getSeconds()); ......
下面是用java实现的选择排序,每次从数组中选取最小的值:
import java.util.Date;
import java.util.Random;
/*
* 选择排序
*/
public class SelectSort {
public static void main(String args[])
{
int len = 40;
Date date = new Date();
Random random = new Random(date.getSeconds());
int ......