思路展示:
<iframe allowfullscreen="true" data-mediaembed="bilibili" id="YBs2yKcE-1645973884723" src="https://player.bilibili.com/player.html?aid=417619630"></iframe>选择排序
(本视频来自网络,仅供个人观赏学习交流,请勿转载或商用。)
Java代码实现:
import java.util.Arrays; public class selectSort { //主方法 public static void main(String[] args){ //对数器检验 int testTime = 500000;//比对次数 int maxSize = 100; int maxValue = 100; boolean succeed = true; for(int i = 0; i < testTime; i++){ int[] arr1 = generateRandomArray(maxSize, maxValue);//随机生成一个数组,长度随机,元素随机 int[] arr2 = copyArray(arr1);//复制上述数组 selectSort(arr1);//选择排序 comparator(arr2);//此处对数器使用的是Arrays.sort(),是一定正确的,这样我们就可以放心比对了 if(!isEqual(arr1,arr2)){ succeed = false; break; } } System.out.println(succeed ? "Nice~" : "Fucking fucked!"); } //*************************************************************************************** //选择排序 public static void selectSort(int[] nums){ //特殊处理 if (nums.length <= 1){ return; } //排序 for(int i = 0; i < nums.length-1; i++){ int min = Integer.MAX_VALUE; for(int j = i ; j < nums.length; j++){ if(nums[j] < min){ min = nums[j];//更新最小值 //交换数据 int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } } } } //*************************************************************************************** //生成随机数组 public static int[] generateRandomArray(int maxSize, int maxValue){ //Math.random() --> [0,1)所有的小数,等概率返回一个 //Math.random() * N --> [0,N)所有的小数,等概率返回一个 //(int)(Math.randow() * N) --> [0,N)所有的整数,等概率返回一个 int[] arr = new int[(int) (Math.random() * (maxSize + 1))];//长度随机 for(int i = 0; i < arr.length; i++){ arr[i] = (int)(Math.random() * (maxValue + 1)) - (int)(Math.random() * maxValue);//两个随机值相见,保证该值也是随机的 } return arr; } //复制数组 public static int[] copyArray(int[] arr){ if(arr == null){ return null; } return arr; } //比对 public static boolean isEqual(int[] arr1, int[] arr2) { if (arr1 == null && arr2 != null || (arr1 != null && arr2 == null)) { return false; } if (arr1 == null && arr2 == null) { return true; } for (int i = 0; i < arr1.length; i++) { if (arr1[i] != arr2[i]) { return false; } } return true; } //对数器 public static void comparator(int[] nums){ Arrays.sort(nums); } }