随机生成10个10——100间的整数,并对其进行排序,按照从小到大顺序进行排序并输出。
话不多说直接上代码
import java.util.Arrays;
import java.util.Random;
public class Test {
public static void main(String[] args) {
int [] arr = new int[10];//定义一个长度为10的数组
Random r1 = new Random();//引入Random类
for (int i = 0; i < arr.length; i++) {
arr[i] = r1.nextInt(100);//利用for循环将随机生成的数赋值给数组
}
System.out.println("随机生成的10个数为:"+Arrays.toString(arr));//这里采用的是数组的toString方法来遍历的数组
//冒泡排序
//利用单层for循环
/*第一圈
注意:当i变化到9的时候-> arr[9]>arr[10] -> 直接操作了10索引,所以越界了
解决:我们可以让arr.length-1
如果arr.length-1-> 比较就是i<9 -> 此时i最大可以变化到9
当i变化到8时 -> arr[8]>arr[9] -> 正好是最后两个元素进行比较
*/
for (int i = 0; i < arr.length-1-0; i++) {
if (arr[i]>arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
System.out.println("第一圈遍历:"+Arrays.toString(arr));
for (int i = 0; i < arr.length-1-1; i++) {
if (arr[i]>arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
System.out.println("第二圈遍历:"+Arrays.toString(arr));
//这里 for (int i = 0; i < arr.length-1-1; i++)长度减1再减1是因为每一次都少比较一次,有n个元素比较n-1次
//利用双层for循环如下
for (int j = 0; j < arr.length - 1; j++) {
for (int i = 0; i < arr.length - 1 - j ; i++) {//注意这里是-1-j
if(arr[i] > arr[i+1]) {
int temp = arr[i+1];
arr[i+1] = arr[i];
arr[i ] = temp;
}
}
}
System.out.println("冒泡排序后为:"+Arrays.toString(arr));
}
}
注意每一次运行的结果都不同,如果想要运行结果相同的话可以
在Random r1 = new Random(),括号里写入参数。