蓝桥杯基础题java
时间: 2025-07-02 14:03:23 浏览: 8
### 蓝桥杯 Java 基础练习题及答案
#### 题目一:有序数组插入
给定一个已按照升序排列的整数数组 `a` 和一个新的整数值 `num`,要求将此新值插入到数组中并保持原有的顺序不变。
```java
import java.util.Arrays;
import java.util.Scanner;
public class InsertIntoSortedArray {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int[] a = {1, 4, 23, 67, 99}; // 默认升序
int[] b = new int[a.length + 1];
int t = 0;
for (int i = 0; i < a.length; i++) {
if (a[i] < num) {
b[i] = a[i];
} else {
if (t == 0) {
b[i] = num;
t++;
}
b[i + 1] = a[i];
}
}
System.out.printf(Arrays.toString(b));
}
}
```
这段代码实现了向已有排序好的数组中插入新的元素,并维持原有顺序的功能[^2]。
#### 题目二:因数分解
对于任意两个正整数 `a` 和 `b` (满足条件 \(2 \leqslant a \leqslant b \leqslant 10000\)),程序会依次输出从 `a` 到 `b` 的每一个自然数及其质因子分解表达式。
```java
import java.util.Scanner;
public class Factorization {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
for (int i = a; i <= b; i++) {
int k = i;
int j = 1;
System.out.print(i + "=");
while (k != 1) {
j++;
if (k % j == 0) {
k /= j;
if (k == 1) {
System.out.print(j);
} else {
System.out.print(j + "*");
}
j = 1;
}
}
System.out.println();
}
}
}
```
上述代码展示了如何实现对指定范围内所有整数进行质因数分解的任务[^3]。
#### 题目三:构建霍夫曼树(Huffman Tree)
霍夫曼编码是一种用于数据压缩的技术,在这里关注的是其构造过程。具体来说就是通过不断选取当前集合中的最小两数来创建节点直至形成完整的霍夫曼树结构。下面是一个简单的例子说明这一算法:
假设存在一组权重分别为 `{5, 7, 10}` 的字符,则可以按照以下方式建立对应的霍夫曼树:
1. 初始化队列 Q={5,7,10};
2. 取出前两位较小者组合成新结点 N(5+7)=N(12),更新Q={12,10};
3. 继续取最小两项组成新结点 M=(12+10), 更新后的最终状态为Q={M};
此时得到一棵由原始三个叶子组成的霍夫曼树,整个过程中产生的额外开销即为各次合并操作所花费的成本之和——也就是\(C=5+7+(12+10)\)[^4].
```java
// 这里仅提供概念描述而非完整代码实现
```
阅读全文
相关推荐


















