package self.training; import java.util.Arrays; public class SelectionSort { public static void main(String[] args) { /* * 选择排序的实现 * 原理:选第一个数作为最小值,遍历数组剩余的数,如遇到比它小的,就交换它们的位置,以此类推 * 用来观察运行效率、运行状态的代码可不写 * 此代码为升序 * 顺带练习同一个类当中,方法的调用 */ int[] arr = array(10); //通过调用array方法,创建一个名为arr的数组,数组长度由输入的数决定 System.out.println(Arrays.toString(arr)); //输出观察原始数组 int cycle = 0; //声明一个名为cycle的整型变量,用来统计循环次数,观察排序效率 long startTime = System.currentTimeMillis(); //记录排序开始时的时间,便于观察排序效率 for (int i = 0; i < arr.length; i++) { int min = arr[i]; //假设每次外循环所对应下标的数是最小数 //由于起始数不用和自己相比,所以加1,且不用和之前已排好序的相比,所以加i for (int j = i + 1; j < arr.length; j++) { if(min > arr[j] ){ //如果起始数比遍历中的数大,则交换两个数的位置 min = arr[j]; arr[j] = arr[i]; arr[i] = min; } cycle++; //每循环一次自增1 } } long endTime = System.currentTimeMillis(); //记录排序结束时的时间,用来观察排序效率 System.out.println(Arrays.toString(arr)); //输出观察排序后的数组 System.out.println("总循环次数:"+cycle); System.out.println("耗时"+(endTime-startTime)+"毫秒"); } /* * 制作一个有参且有返回值的方法,名叫array * 此方法用来生成int数组,数组长度由用户决定,数组元素为[0~99]之间的随机数 */ public static int[] array(int length){ int[] array = new int[length]; for (int i = 0; i < array.length; i++) { array[i] = (int)(Math.random()*100); //生成[0~99]之间的随机数 } return array; //返回数组array的值 } }
选择排序的实现,及其效率具象化
最新推荐文章于 2024-09-01 15:30:33 发布