需求
- 生成隨機數組
- 進行數組中的交換
- 打印數組
- 測試運行時間
- 判斷數組是否有序
示例
public class SortUtils {
//不允許實例化
private SortUtils(){}
//生成有n個元素的隨機數組,每個元素的隨機范圍為[rangeL, rangeR]
public static int[] getRandomIntArray(int n,int rangeL,int rangeR){
assert rangeL <= rangeR;
int[] arr = new int[n];
for (int i=0;i<n;i++){
arr[i] = (int) (Math.random() * (rangeR - rangeL + 1) + rangeL);
}
return arr;
}
//交換數組里的兩個數
public static void swap(int[] arr,int i,int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
//打印數組
public static void printArr(int[] arr){
int length = arr.length;
for (int i=0;i<length;i++){
if (i==length-1){
System.out.println(String.valueOf(arr[i]));
}else {
System.out.print(arr[i]+",");
}
}
}
/**
* 測試運行時間的通用方法
* @param className
* @param methodName
* @param arr
*/
public static void runTime(String className,String methodName,int[] arr){
try {
Class clazz = Class.forName(className);
Method method = clazz.getMethod(methodName, int[].class);
int start = (int) System.currentTimeMillis();
method.invoke(null, arr);
int end = (int) System.currentTimeMillis();
if (isSort(arr)){
System.out.println("方法"+methodName+"運行時間為:"+(end-start)+"ms");
}else{
System.out.println("排序有誤");
}
} catch (Exception e) {
e.printStackTrace();
}
}
//判斷數組是否有序
public static boolean isSort(int[] arr){
int length = arr.length;
for (int i=0;i<length-1;i++){
if (arr[i]-arr[i+1]>0){
return false;
}
}
return true;
}
}