排序算法-校验器
校验器介绍
使用校验器来校验排序结果是否正确
Java 代码实现
/**
* @Desc SortChecker 排序校验器
* @Author qingjiang.li
* @Date 2021/4/21
*/
public class SortChecker {
/**
* main 方法
*
* @param args args
*/
public static void main(String[] args) {
//测试50万次
int totalCount = 500000;
//是否测试通过
boolean testOK = true;
//开始测试
for (int i = 0; i < totalCount; i++) {
//随机产生20-50大小的数组,数值大小为0-1000
int count = new Random().nextInt(30) + 20;
int[] arr = new int[count];
for (int j = 0; j < count; j++) {
arr[j] = new Random().nextInt(1000);
}
//具体排序算法
QuickSort.quickSort(arr);
//SelectSort.selectionSort(arr);
//校验排序结果
boolean result = SortChecker.checkSortResult(arr);
if (!result) {
testOK = false;
System.out.println("测试失败,失败数据如下:");
SortChecker.printArray(arr);
break;
}
}
//打印测试通过结果
if (testOK) {
System.out.println("所有测试通过,总数:" + totalCount);
}
}
/**
* 检查排序结果
*
* @param arr 数组
* @return boolean
*/
public static boolean checkSortResult(int[] arr) {
if (arr == null || arr.length <= 1) {
return true;
}
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) {
return false;
}
}
return true;
}
/**
* 输出数组
*
* @param arr 数组
*/
public static void printArray(int[] arr) {
System.out.println(Arrays.asList(arr));
}
}
浙公网安备 33010602011771号