(一)降序冒泡
冒泡排序即为相邻两个数比较。如果前一个数比后一个数小,那么将这两个数的位置互换。
1、第一个数与第二个数比较,如果第一个数比第二个数小,那么将第一个数与第二个数互换位置。
2、然后让第二个数与第三个数比较,如果第二个数比第三个数小的话,那么将其互换。
3、重复执行前一个数与后一个数互换,一轮循环结束,可以保证最后一个数一定是数组中最小的值。
4、重复以上步骤,第二轮比较过后,可以保证倒数第二个数一定是数组中倒数第二小的数。
5、重复执行【数组的长度-1】次即可得到一个降序排列的数组。
import java.util.Arrays;
public class BubbleSortMethod {
public static void main(String[] args) {
// 1、定义数组并赋值
int[] arr1 = new int[] {78,25,63,98,120,66};
// 2、外层循环用来控制比较次数
for (int i = 0; i < arr1.length; i++) {
// 3、内层循环用来比较相邻的元素并交换
for (int j = 0; j < arr1.length - 1; j++) {
if (arr1[j] < arr1[j+1]) {
int temp = arr1[j];
arr1[j] = arr1[j+1];
arr1[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(arr1));
}
}
升序只需要将判断条件改为大于即可
二、Scanner给数组动态赋值+扩容import java.util.Arrays;
import java.util.Scanner;
public class DilatancyArrays2 {
public static void main(String[] args) {
// 1、定义键盘扫描器
Scanner key = new Scanner(System.in);
// 2、创建数组并初始化
int[] arr1 = new int[10];
// 3、判断添加数字是否超过10个,若超过则对其进行扩容
System.out.println("请输入您要输入的数字个数:");
int num = key.nextInt();
// 如果用户要输入的数小于10,则正常遍历赋值即可
if (num <= arr1.length) {
for (int i = 0; i < num; i++) {
System.out.println("请输入您要输入的数字");
int arrNum = key.nextInt();
arr1[i] = arrNum;
}
}else { // 否则先将值赋给新数组,然后再将数组通过Arrays.copyOf方法赋值给旧的数组
int[] newArr = new int[num];
for (int i = 0; i < num; i++) {
System.out.println("请输入您要输入的数字");
int arrNum = key.nextInt();
newArr[i] = arrNum;
}
// 将数组的元素复制给arr1,并说明新数组的长度
arr1 = Arrays.copyOf(newArr, num);
}
// Arrays封装的输出数组的方法
System.out.println("数组的值为:"+Arrays.toString(arr1));
}
}
这里使用的扩容方式是:通过Arrays.copyOf(参数1,参数2)方法。参数1写的是要复制的参数,参数2写的是新数组的长度如果参数2小于原先的数组的长度即为缩容,大于即为缩容。
还有一种方式是:
int[] arr1 = new int[10]; int[] arr2 = new int[arr1.length*2];



