很多时候,我们写的代码虽然能够通过我们自己手动输入的样例,但是这段代码的正确性还是有待考究的。比如,当你在一些Online Judge的网站上敲题时,可能写的解决办法能够完美解决样例给出的输入,并给出正确输出,但是提交之后还是会wa。有时候可能是因为没有考虑边界问题,有时候可能是贪心算法有问题。这时候就应该模拟一下大数据量的输入来验证一下自己代码的正确性。思路如下:(拿简单的冒泡排序为例)
1.一个绝对正确的方法作为参考
拿排序方法举例,我们可以调用Java所提供的Arrays.sort函数作为绝对正确的方法,保证我们有正确的参考。其他的问题我们就可以写一些虽然暴力,时间复杂度高或者空间复杂度高的方法,只要它绝对正确就可以。
public static void comparator(int[] arr) {
Arrays.sort(arr);
}
2.能够产生随机输入的函数
拿排序方法举例,我们只要写出一个能产生随机数组并赋值我们想要的随机数值的函数就可以。要保证产生的输入是随机的,可以帮我们查错就可以。当然,有的题目的输入很复杂,所以产生输入的函数也会变得复杂。
public static int[] generateArrayRandom(int maxSize, int maxValue) {
int size = (int) (Math.random() * (maxSize + 1));
int arr[] = new int[size];
for (int i <