- package com.sunada.demo1_22.java;
- import java.util.Arrays;
- import java.util.Random;
- /*
- * 思路:
- 1.产生随机数需要用到产生随机数的随机数产生器Random(这属于工具,所以在util包中)。
- 2.将随机数放在数组中,这样每一个数对应的就有一个角标,通过数组相邻的两个角标的数进行比较,
- 左边的数比右边的大,那么左右两边的数就互换位置。这样做的目的是,比较后数值大小既互换位置了,
- 而且通过数组的角标记下了相邻两个数的位置。这样做小的数会自动往左边移,而且相对于普通的比较
- 次数要少很多次。
- 分析:
- 1.构造一个随机生成一个数组的生成器方法getRandom(a,b).
- 1.1.生成器返回值类型是数组类型,有两个未知参数参与实现该功能,a是产生随机数个数限定,b是随机数大小在多少范围之间
- 2.生成器方法需要定义参数数组的的长度及生成的数的范围。
- 3.调用数组的排序方法。selectSort。
- 3.1.selectSort分为外循环和内循环,外循环是比较的次数,即数组的第几个角标
- 3.2.内循环主要作用是第几个角标里的数与相邻两个角标里的数比较大小,并互换位置。
- 4.排序后的数组的第一个角标数是最小的,最后一个是最大的
- */
- public class SelectSort1 {
- public static void main(String[] args) {
- int[] arr = getRandom(10,200);
- //打印数组内容,将数组以字符串的形式打印出来,调用数组Arrays的toString方法
- System.out.println("arr:"+ Arrays.toString(arr));
- //排序,调用selectSort方法
- selectSort(arr);
- System.out.println("arr1:"+Arrays.toString(arr));
- //最小值
- System.out.println("min:"+arr[0]);
- //最大值
- System.out.println("max:"+arr[arr.length-1]);
- }
- /*
- * 排序
- */
- private static void selectSort(int[] arr) {
- //外循环
- for(int i=0;i<arr.length;i++){
- //内循环
- for(int j=i+1;j<arr.length;j++){
- if(arr[i]>arr[j]){
- int temp = arr[i];
- arr[i] = arr[j];
- arr[j] = temp;
- }
- }
- }
- }
- /**
- * 生成一个随机数组
- * @param a 随机数组的长度。
- * @param b 每一个随机数的大小的取值范围,包含0,但不包含b
- * @return
- */
- private static int[] getRandom(int a,int b) {
- //定一个生成器
- Random random = new Random();
- //创建一个长度为10的数组,用于存储随机数生成器生成的数
- int[] arr = new int[a];
- //通过遍历,把随机数生成器每一次产生的数放进数组
- for(int i =0;i <arr.length;i ++){
- arr[i] = random.nextInt(b);
- }
- return arr;
- }
- }
- arr:[19, 186, 199, 153, 35, 114, 90, 36, 117, 33]
- arr1:[19, 33, 35, 36, 90, 114, 117, 153, 186, 199]
- min:19
- max:199