//1、随机生成4个(34-89)的随机数,对这4个数进行冒泡排序(不能使用工具类)(6分钟)使用java实现
时间: 2025-04-02 08:19:51 浏览: 21
<think>好的,我需要帮助用户用Java实现生成4个34到89之间的随机数,并进行冒泡排序,而且不用工具类。首先,用户提到不使用工具类,所以不能使用Java自带的Random类。那要怎么生成随机数呢?
我记得Math类里有个random()方法,返回的是0.0到1.0之间的double值,包括0但不包括1。所以可以用这个方法来生成。比如,要得到34到89之间的整数,包括34和89的话,应该怎么计算呢?
范围是89 -34 +1 =56个数。所以Math.random()乘以56得到0到55.999...,然后取整,加上34,就能得到34到89之间的数。不过要确保是整数,所以要强制转换成int类型。比如:(int)(Math.random() * 56) +34。
接下来,生成4个这样的数,可以用一个循环,将每个数存入数组里。然后对这个数组进行冒泡排序。
冒泡排序的话,外层循环控制轮数,内层循环比较相邻元素,如果前面的数比后面的大,就交换。这样每一轮把最大的数移到后面。对于4个元素,外层循环需要3次,因为3次就能排好序。
然后,用户可能还需要打印排序前和排序后的数组。所以需要定义一个方法或者直接在main里输出数组内容。
不过用户给出的引用中有提到类似的方法,比如引用[3]中的输出排序前的数组。所以可能需要先输出生成的随机数,再排序后再输出。
现在需要考虑代码的结构。主函数里生成数组,打印原始数组,调用冒泡排序方法,再打印排序后的数组。
关于冒泡排序的实现,要注意循环的次数。数组长度是4,外层循环i从0到2(3次),内层循环j从0到3-i-1?或者可能更简单的方式,因为每次最大的元素会冒到最后,所以内层循环每次减少一次比较次数。
例如,对于长度为n的数组,外层循环i从0到n-2,内层循环j从0到n-1-i,比较arr[j]和arr[j+1],交换位置。
然后,测试一下代码是否正确。比如生成的随机数是否在范围内,排序是否正确。
可能的错误点在于随机数的生成是否正确,以及冒泡排序的逻辑是否正确。比如,确保Math.random()的范围计算正确,以及交换元素的代码是否正确。
另外,用户希望不用工具类,所以不能用Random类,而Math.random()是允许的,因为属于基本类库的一部分,不算工具类?这点可能需要确认,但用户给出的示例引用了Random类,但用户现在不想用,所以使用Math的random方法应该可以。
综上,代码的大致步骤是:
1. 生成4个34-89之间的随机数,存入数组。
2. 打印原始数组。
3. 冒泡排序。
4. 打印排序后的数组。
现在把这些步骤转化为Java代码。</think>### Java实现生成指定范围随机数及冒泡排序
以下是使用Java原生方法(不依赖工具类)生成4个34到89之间的随机数并进行冒泡排序的实现步骤:
#### 1. 生成随机数
使用`Math.random()`生成随机数,其范围计算公式为:
$$ \text{随机数} = (int)(\text{Math.random()} \times (\text{max} - \text{min} + 1)) + \text{min} $$
对于34到89的范围,计算为:
`(int)(Math.random() * 56) + 34`。
#### 2. 冒泡排序实现
通过双层循环遍历数组,比较相邻元素并交换顺序,确保每一轮将最大值移动到末尾。
#### 完整代码
```java
public class BubbleSortRandom {
public static void main(String[] args) {
int[] arr = new int[4];
// 生成随机数
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 56) + 34; // 34到89的闭区间[^1]
}
System.out.println("排序前:");
printArray(arr);
// 冒泡排序
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]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
System.out.println("\n排序后:");
printArray(arr);
}
// 打印数组
public static void printArray(int[] arr) {
for (int num : arr) {
System.out.print(num + " ");
}
}
}
```
#### 代码说明
1. **生成随机数**:通过`Math.random()`生成0.0到1.0的浮点数,扩展为34-89的整数范围。
2. **冒泡排序**:外层循环控制排序轮数,内层循环比较并交换元素。
3. **输出方法**:`printArray`遍历数组并打印元素,类似引用[2]中遍历对象数组的思路。
阅读全文
相关推荐


















