就是你有优解,但是不知道对不对,或者你遇到了题,但是没有在线网站能跑,无法检查你的思路是否正确。
写一个随机生成符合输入要求的方法。
此时用暴力解法写一个,因为答案肯定是对的,再写一个优解方法。将两个答案进行对比。
经过很多轮这样的对比,就能确定优解思路正确。
public class _005 {//对数器public static void main(String[] args) {//N 是数组几位数的范围int N = 10;int max = 500;int testTimes = 100;//进行多少次测试System.out.println("测试开始!!");for (int i = 0; i < testTimes; i++) {System.out.println("这是第" + (i+1) + "次测试");//在这里使用N 随机产生数组多少位int n = (int) (Math.random() * N) + 1;int[] arr = randomArray(n, max);int[] arr1 = copy(arr);int[] arr2 = copy(arr);int[] arr3 = copy(arr);/* sout(arr);sout(arr1);sout(arr2);sout(arr3);System.out.println("~~~~~~~排序后~~~~~~~~");*/selectSort(arr1);popSort(arr2);insertSort(arr3);/* sout(arr1);sout(arr2);sout(arr3);*//* 编程习惯:在很多情况下,程序员习惯于使用!=来检查不等的情况,因为这样可以更快地发现问题并作出反应(即数组不相同的情况),这是一种常见的编程实践。避免错误:如果使用==,可能会在逻辑上产生误导,特别是在复杂的条件判断中,容易让人误解比较的意图。使用!=则直接表明了比较的目的,即寻找数组中的不同之处。*///此时就要注意 && 和 || 的使用if (!sameArray(arr1, arr2) && !sameArray(arr3, arr1) ) {System.out.println("出错了!");}System.out.println("测试通过!!!");}System.out.println("测试结束");}//输出数组public static void sout(int[] arr){for(int i : arr){System.out.print(i);}System.out.println();}//随机产生一个数组//利用randompublic static int[] randomArray(int n, int max) {//n 是这个数组有几个数字,max 是这个数组的最大值int[] arr = new int[n];for (int i = 0; i < n; i++) {arr[i] = (int) (Math.random() * max) + 1;}return arr;}//复制数组public static int[] copy(int[] arr) {int[] copy_arr = new int[arr.length];for (int i = 0; i < arr.length; i++) {copy_arr[i] = arr[i];}return copy_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 insertSort(int[] arr){if(arr == null || arr.length == 1){return;}for(int i = 0; i < arr.length; i++){for(int j = i-1;j >= 0 && arr[j] > arr[j+1];j--){swap(arr, j, j+1);}}}//选择排序public static void selectSort(int[] arr) {if (arr == null || arr.length == 0) {return;}for (int i = 0; i < arr.length; i++) {for (int end = arr.length - 1; end > i; end--) {if (arr[end] < arr[i]) {swap(arr, i, end);}}}}//冒泡排序public static void popSort(int[] arr) {if(arr == null || arr.length == 1){return;}for (int end = arr.length - 1; end > 0; end--) {for (int i = 0; i < end; i++) {if (arr[i] > arr[i + 1]) {swap(arr, i, i + 1);}}}}//查看两个数组是否相同public static boolean sameArray(int[] arr1,int[] arr2){int n = arr1.length;for(int i = 0;i < n ;i++){if(arr1[i] != arr2[i]){return false;}}return true;}/* 编程习惯:在很多情况下,程序员习惯于使用!=来检查不等的情况,因为这样可以更快地发现问题并作出反应(即数组不相同的情况),这是一种常见的编程实践。避免错误:如果使用==,可能会在逻辑上产生误导,特别是在复杂的条件判断中,容易让人误解比较的意图。使用!=则直接表明了比较的目的,即寻找数组中的不同之处。*/
}