归并排序 java语言实现
2015-08-02 11:30
507 查看
package sort; import java.util.Random; public class MergeSort { @SuppressWarnings("unused") public boolean initTestArray(int[] testArray) {// 初始化testArray if (testArray == null) return false; Random random = new Random(); for (int i = 0; i < testArray.length; i++) { testArray[i] = random.nextInt(200); } return true; } public boolean printTestArray(int[] testArray) {// 打印testArray中的内容 if (testArray == null) return false; for (int i = 0; i < testArray.length; i++) { System.out.print(testArray[i] + ","); } System.out.println(); return true; } public static boolean mergeSort(int[] testArray,int left,int right){ if(left<right){ int mid=(left+right)/2; mergeSort(testArray,left,mid); mergeSort(testArray,mid+1,right); if(!merge(testArray,left,mid,right)) return false; //for(int i=0;i<testArray.length;i++) //System.out.print(testArray[i]+","); //System.out.println(); return true; } return true; } @SuppressWarnings("unused") public static boolean merge(int[] testArray,int left,int mid,int right){ int i=left,j=mid+1,k=0,s=right-left+1; int[] testArray2=new int[s]; if(testArray2==null){ System.out.println("testArray2存储分配失败!"); return false; } while(i<=mid&&j<=right) if (testArray[i] <= testArray[j]) testArray2[k++]=testArray[i++]; else testArray2[k++]=testArray[j++]; while(i<=mid) testArray2[k++]=testArray[i++]; while(j<=right) testArray2[k++]=testArray[j++]; for(i=0;i<s;i++) { testArray[left+i]=testArray2[i]; //System.out.print(testArray2[i]+","); } //System.out.println(); return true; } public static void main(String args[]){ int[] testArray = new int[20]; MergeSort mergeSort=new MergeSort(); mergeSort.initTestArray(testArray); System.out.println("排序前:"); mergeSort.printTestArray(testArray); if(!MergeSort.mergeSort(testArray, 0, testArray.length-1)){ System.out.println("排序出错!"); return; } System.out.println("排序后:"); mergeSort.printTestArray(testArray); } }
相关文章推荐
- Spring的自动装配
- Java之集合类【HashMap】【入门版,实例解析】
- javax.servlet.ServletException: bean [name] not found within scope
- Java之反射机制【入门版(4)】
- JavaWeb 分页管理
- Java之反射机制【入门版(3)】
- 异常:java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
- Java之反射机制【入门版(1)】
- java学习笔记之-构造函数
- Java之克隆
- struts2的简介_小记
- Java中的volatile关键字
- Java之反射机制【入门版(2)】
- Java程序设计之正则表达式
- JAVA流程控制语句
- Velocity + log4j + Spring MVC + Spirng + MyBatis + Maven整合
- java jdk TimSort
- java 嵌套类 简记
- 冒泡、快速、直接插入、选择排序算法(Java语言实现)
- Andriod ADT v22.6.2版本中在Mainactivity.java中使用fragment_main.xml中TextView控件对象的问题