package com.liuxt.sort;
import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Random;
public class SortUtil {
public static final String INSERT="INSERT"; public static final String SELECT="SELECT"; public static final String BUBBLE="BUBBLE"; public static final String QUICK="QUICK"; public static final String XIER="XIER"; public static final String HEAP="HEAP"; public static final String MERGE="MERGE"; public static final String[] sortNames={INSERT,SELECT,BUBBLE,QUICK,XIER,HEAP,MERGE}; private static Map<String,Long>timeSort=new HashMap<String,Long>(); /** * 创建测试数据。 * @param length * @return */ public static synchronized int[] createData(int length,int maxElement) { int[] a = new int[length]; Random random = new Random(); for (int i = 0; i < length; i++) { a[i] = random.nextInt(maxElement); } return a; } public static synchronized void setTime(String name,Long time){ timeSort.put(name,time); } public static synchronized String getSortNameById(int index){ if (index >=0 && index <sortNames.length){ return sortNames[index]; } else return null; } /** * 显示排序的结果 * @param data */ @SuppressWarnings("unused") public static synchronized void showResult(int[] data) { boolean result=sortIsCorrect(data); System.out.println("sort algorithm is :"+result); }
/** * 显示排序的时间统计 * @param data */ @SuppressWarnings("unused") public static synchronized void showTimeStatistic() { System.out.println("算法执行时间如下: "); Iterator iter=timeSort.keySet().iterator(); System.out.println("------------------------------------------------------ ");
while(iter.hasNext()) { String name=(String)iter.next(); long time=timeSort.get(name); System.out.println(name+"---"+"---- time:"+time+"ms"); } System.out.println("------------------------------------------------------ "); }
/** * 显示排序数组的值,输出到控制平台上 * @param data */ public static synchronized void displayData(int[] data) { for(int i=0;i<data.length;i++){ System.out.printf("%10d",data[i]); if(i>0 && i%20==0) System.out.println(""); } System.out.println(""); }
/** * 排序结果是否正确的检验方法。 * @param data * @return */ public static synchronized boolean sortIsCorrect(int[] data) { for(int i=0;i<data.length-1;i++){ if(data[i]>data[i+1]) return false; } return true; } }
相关资源:SortUtil.java