Java的编程之旅14——组数的一些应用小栗子

1.数组的逆序存储

Random ran = new Random();
int[] arr = new int[10];
System.out.println("逆序前:");
for(int i = 0;i < arr.length; i++){
    System.out.print(arr[i] + " ");
}
System.out.println();
System.out.println("逆序后:");
for(int i = 0;i < arr.length/2; i++){
    int t = arr[i];
    arr[i] = arr[arr.length-1-i];
    arr[arr.length-1-i] = t;
}
for(int i = 0;i < arr.length; i++){
    System.out.print(arr[i]+" ");
}

首先导入了Random类,并在main方法中创建了一个Random对象ran来生成随机数。

然后,创建了一个长度为10的int数组arr来存储随机数。

接下来,使用for循环遍历数组arr,并使用ran.nextInt(100)生成一个范围在0到99之间的随机整数来赋值给数组元素arr[i]。这样,数组arr就被随机初始化了。

然后,使用for循环输出数组arr的初始顺序。

然后,使用for循环进行数组的逆序排列。这里遍历的次数是数组长度的一半,并且使用临时变量t来存储交换过程中的临时值。将当前元素arr[i]与对称位置的元素arr[arr.length-1-i]进行交换。

最后,再次使用for循环输出逆序排列后的数组arr

这样,代码就实现了将数组逆序排列的功能。输出结果中首先会有一个逆序前的数组顺序,然后是逆序后的数组顺序。

2.数组中插入元素后仍有序

思路:
* 开辟一个新位置int place = 0
* 使用for循环遍历数组,寻找插入点。这一步骤通过比较要插入的数值num与数组中的元素,
* 寻找第一个大于等于num的元素位置place,作为插入点。
* 如果所有元素都小于num,则插入点为数组末尾。
* 从数组末尾开始,直到找到的插入点place,将每个元素向后移动一位。这样做是为了空出插入点的位置。
* 在找到的插入点place处插入用户输入的数值num。
Random ran = new Random();
int[] arr = new int[10];
for(int i = 0;i < arr.length; i++){
    System.out.print(arr[i] + " ");
}
System.out.println();

System.out.println("输入插入的位置:");
int num = new Scanner(System.in).nextInt();
int place = 0;
for(place = 0;place < arr.length - 1;place++){
    if(num<arr[place]){
        break;
    }
}

for (int i = arr.length-2 ;i >= place ; i--) {
    arr[i+1] = arr[i];
}

arr[place] = num;
for (int i = 1; i < arr.length; i++) {
    System.out.print(arr[i]+" ");
}

代码首先导入了Random类,并创建了一个Random对象ran来生成随机数。

然后,创建了一个长度为10的int数组arr来存储数字。

接下来,使用for循环输出数组arr的初始内容,由于数组初始化为0,所以输出的结果都为0。

然后,通过输入的方式获取一个需要插入的数字num

使用for循环遍历数组arr,并通过比较找到插入位置place,当找到第一个大于num的元素时,终止循环。

接下来,使用for循环将插入位置以及之后的元素依次向后移动一位,为插入num做准备。

然后,将num插入到place位置。

最后,使用for循环输出插入后的数组,并没有输出第一个位置的元素。

这样,代码就实现了插入一个输入的数字到数组的指定位置,并输出插入后的数组。

 3.冒泡排序(很重要)

Random ran = new Random();
int[] arr = new int[10];
for(int i = 0;i < arr.length; i++){
    System.out.print(arr[i] + " ");
}
System.out.println();

for(int i = 0; i < arr.length - 1; i++){
    for(int j = 0;j < arr.length - 1 - i;j++){
        if(arr[j] > arr[j+1]){
            arr[j] ^= arr[j+1];
            arr[j+1] ^= arr[j];
            arr[j] ^= arr[j+1];
        }
    }
    System.out.print(arr[i]+" ");
}

代码首先导入了Random类,并创建了一个Random对象ran来生成随机数。

然后,创建了一个长度为10的int数组arr来存储数字。

使用for循环输出数组arr的初始内容,由于数组初始化为0,所以输出的结果都为0。

接下来,使用两层for循环嵌套进行冒泡排序。外层循环控制比较的轮数,内层循环控制每一轮比较的次数。

在内层循环中,通过比较相邻元素的大小,如果前一个元素大于后一个元素,则交换它们的位置。

交换元素的操作使用了异或运算的特性,可以避免使用额外的变量进行交换。

每一轮比较结束后,最大的元素都会被移动到当前的最后位置。

最后,使用for循环输出排序后的数组,由于已经进行了arr.length - 1轮比较,所以最后一个元素已经是最大的,不需要再输出。

这样,代码就实现了对一个初始为空的数组进行冒泡排序,并输出排序后的数组。

4.杨辉三角

杨辉三角
* 思路:先将腰上的边输出[i][0]=1,[i][i]=1
* 从第2行开始,[i-1][j-1]+[i-1][j];
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
int[][] triangle = new int[5][5];
for(int i = 0;i < 5;i++){
    arr[i][0] = 1;
    arr[i][i] = 1;
}
for(int i = 2;i < 5;i++){
    for (int j = 1; j < i; j++) {
        triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j];
    }
}
for (int i = 0; i < triangle.length; i++) {
    for (int j = 0; j <= i; j++) {
        System.out.print(triangle[i][j]+" ");
    }
        System.out.println();
}

首先,创建了一个大小为5x5的二维数组triangle。

然后,使用两个循环来初始化数组。第一个循环是为了将每一行的第一个和最后一个元素设为1。第二个循环是为了计算每一行的其他元素的值,通过将上一行两个相邻元素的和赋值给当前行的对应位置。

最后,使用两个循环遍历数组,并输出每个元素的值。在每行的末尾使用println()方法换行输出。

这样就可以生成一个杨辉三角并输出。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惊爆点大男主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值