为什么用此方法输出的索引为零元素结果值为一直为零,是不是冒泡排序的问题?

为什么用此方法输出的索引为零元素结果值为一直为零,是不是冒泡排序的问题?

问题描述:

package 方法;

import java.util.Arrays;

public class 双色球 {
    public static void main(String[] args) {
        sh();
    }

    public static void sh() {
        int[] arr = new int[7];
        int b = (int) (Math.random() * 16) + 1;

        for (int i = 0; i < arr.length - 1; i++) {
            int a = (int) (Math.random() * 33 + 1);
            arr[i] = a;
        }
        for (int n = 0; n <= 5; n++) {
            for (int m = 0; m <= 5 - n; m++) {
                if (arr[m] > arr[m + 1]) {
                    int temp = arr[m];
                    arr[m] = arr[m + 1];
                    arr[m + 1] = temp;
                }
            }
        }
        arr[arr.length - 1] = b;
        System.out.println(Arrays.toString(arr));


    }


}

你这是排完序了才给arr[6]赋值,本来的arr[6]就是0排完序后放在a[0]了你的

for (int i = 0; i < arr.length - 1; i++) {
            int a = (int) (Math.random() * 33 + 1);
            arr[i] = a;
        }只生成a[0]到a[5],a[6]为0

冒泡没啥问题啊。你调试看看arr[0]是啥

 int[] arr = new int[7];等价于 int[] arr={0,0,0,0,0,0,0};
   for (int i = 0; i < arr.length - 1; i++) {}便利了0,1,2,3,4,5,当等于6的时候,不符合6<7-1,也就是arr变成了arr={x,x,x,x,x,x,0};
Math.random()返回[0.0,1.0)之间的数
 (int) (Math.random() * 33 + 1)表示[1,34)当然大于0,所以第6位索引永远放在第一个位置,第一个值当然永远是0.

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y