需求
- 生成随机数组
- 进行数组中的交换
- 打印数组
- 测试运行时间
- 判断数组是否有序
示例
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;
}
}
网友评论