MergeSort的实现
来源:互联网 发布:网络协同 系统架构 编辑:程序博客网 时间:2024/04/30 07:48
package sort;
import java.util.*;
import java.io.*;
public class MergeSort
{
public static int times;
public void mergeSort (Comparable [] data,int min,int max)
{
if (min==max) return;
int pivot = (min+max)/2;
mergeSort(data,min,pivot);
mergeSort(data,pivot+1,max);
merge(data,min,pivot,max);
}
private void merge(Comparable [] data,int min,int pivot ,int max) {
Comparable temp[] ;
int left ;
int right;
int size = max-min+1;
temp = new Comparable[size];
for (int i=0; i<size; i++)
{
temp[i] = data[min+i];
}
// merge the 2 sorted lists
left = 0;
right = pivot-min+1;
for (int i=0;i<size;i++)
{
times++;
if(right<=max-min)
if (left<=pivot-min)
if (temp[left].compareTo(temp[right])>0)
data[i+min] = temp[right++];
else
data[i+min] = temp[left++];
else
data[i+min] = temp[right++];
else
data[i+min] = temp[left++];
}
}
public static void main(String [] args) throws IOException
{
String inString ;
StringTokenizer tokenizer;
Integer [] elements;
MergeSort ms = new MergeSort();
BufferedReader in = new BufferedReader( new InputStreamReader(System.in));
System.out.println("Please input the size ( size>0 ): ");
inString = in.readLine();
elements = new Integer[Integer.parseInt(inString)];
System.out.println("Enter the numbers of elements :(gap it with Key_space or Key_tab) ");
inString = in.readLine();
tokenizer = new StringTokenizer(inString);
for (int i =0; i<elements.length && tokenizer.hasMoreTokens();i++)
{
elements[i] = Integer.parseInt(tokenizer.nextToken());
}
long startTime = System.currentTimeMillis();
ms.mergeSort(elements,0,elements.length-1);
System.out.println("after sorted :");
for (int i=0;i<elements.length;i++)
{
System.out.println(elements[i]);
}
System.out.println("take time = "+(System.currentTimeMillis()-startTime));
System.out.println("size : "+elements.length+" , cursory times : "+times);
}
}
- MergeSort的实现
- MergeSort 的实现
- C++ 实现MergeSort算法
- mergeSort java实现
- MergeSort C++实现
- mergeSort代码实现
- linux下归并排序(MergeSort)算法的C语言实现
- 算法学习笔记 —— MergeSort 的一种循环实现
- 算法导论第二章mergesort的C++ 实现
- C++实现归并排序Mergesort(使用递归的方法)
- 实现归并排序MergeSort的非递归动画演示
- 非递归的 MergeSort
- MergeSort
- mergesort
- MergeSort
- mergesort
- mergesort
- Mergesort
- 1111
- 3d 贪食蛇
- 今天我偷看了我家存折……(主要看精彩回复)
- QuickSort实现
- ASP常用函数表
- MergeSort的实现
- 在JSP页面中轻松实现数据饼图
- DELPHI切割文件代码
- ASP写的链表Class,不太实用,就当练习写Class了。
- JSP实现论坛树型结构的具体算法
- 乐悲篇
- BinarySearch的实现
- 在JSP中使用JavaMail
- C的一些简单习题(9)--牛顿迭代法求根