用到了反射,也是对反射的简单回顾吧。
package algorithm;
import java.lang.reflect.Method;
import java.util.Arrays;
public class Test {
// 排序原始数据
private static final int[] NUMBERS =
{49, 38, 65, 97, 76, 13, 27, 78, 34, 12, 64, 5, 4, 62, 99,
98, 54, 56, 17, 18, 23, 34, 15, 35, 25, 53, 51,123,
23,234,21345,123,12343,4545,767823,213,5767,3434,34,
12, 64, 5, 4, 62, 99, 98, 54, 56, 17, 18, 23, 34, 15,
35, 25, 53, 51,123,23,234,21345,123,12343,4545,767823,
98, 54, 56, 17, 18, 23, 34, 15, 35, 25, 53, 51,123,-5,-10,-100,
23,234,21345,123,12343,4545,767823,213,5767,3434,34,
12, 64, 5, 4, 62, 99, 98, 54, 56, 17, 18, 23, 34, 15,213};
/**
* 计算方法执行时间
* @param method 所有方法都是Method类的对象
*/
private static void methodExecutionTime (Method method) {
long begin = System.currentTimeMillis();
try {
method.invoke(new Test(), NUMBERS);
} catch (Exception e) {
e.printStackTrace();
}
long end = System.currentTimeMillis() - begin;
System.out.println(method.getName() + "方法耗时:" + end + "毫秒");
}
public static void main(String[] args) throws Exception {
methodExecutionTime(Test.class.getMethod("insertionSort", new Class[]{int[].class}));
}
/**
* 直接插入排序
* 时间复杂度 平均O(n^2),最好O(n),最坏O(n^2)
* 空间复杂度O(1)
* @param a
*/
public static void insertionSort(int[] a) {
int tmp;
for (int i = 1; i < a.length; i++) {
for (int j = i; j > 0; j--) {
if (a[j] < a[j - 1]) {
tmp = a[j - 1];
a[j - 1] = a[j];
a[j] = tmp;
}
}
}
System.out.println("insertionSort" + Arrays.toString(a));
}
}