案例
请编写程序,实现计算“1+3+5+7+…+99”的值。要求如下:
(1). 使用循环语句实现自然数1~99的遍历。
(2). 在遍历过程中,通过条件判断当前遍历的数是否为奇数,如果是就累加,否则不加。
java
public class Main {
//封装一个类进行递归
public static int getSum(int n){
int sum = 0;
if(n==1) {
return 1;
} else if (n ==0) {
return 0;
} else{
return sum = n + getSum(n-2);
}
};
//主函数调用
public static void main(String[] args){
int result = getSum(99);
System.out.println("总数为:"+result);
}
};- 请使用冒泡排序算法编写程序,实现对数组{25, 24, 12, 76, 101, 96, 28}的排序。
思路:
- 外层循环 (
i)- 控制排序轮数,
n个元素需要n-1轮排序(arr.length次确保完全有序)。
- 控制排序轮数,
- 内层循环 (
j)- 每轮比较相邻元素,范围
0到arr.length - i - 1(已排序部分不再比较)。
- 每轮比较相邻元素,范围
- 交换逻辑
- 通过临时变量
temp实现两个元素的交换,确保较大的数“冒泡”到右侧。
- 通过临时变量
- 输出结果
- 遍历数组并打印,最终输出升序排列的数组。
代码实现:
java
// 定义类名为 Bubble
public class Bubble {
// 主方法,程序入口
public static void main(String[] args) {
// 初始化一个无序数组
int arr[] = {25, 24, 12, 76, 101, 96, 28};
// 外层循环:控制排序轮数(每轮确定一个最大值的位置)
for (int i = 0; i < arr.length; i++) {
// 内层循环:比较相邻元素,将较大的数往后交换
// arr.length - i - 1 是因为每轮后末尾已排序部分无需再比较
for (int j = 0; j < arr.length - i - 1; j++) {
// 如果前一个元素比后一个大,则交换它们
if (arr[j] > arr[j + 1]) {
// 经典的三步交换法
int temp = arr[j + 1]; // 临时保存较小值
arr[j + 1] = arr[j]; // 将较大值后移
arr[j] = temp; // 将较小值前移
}
}
}
// 打印排序后的数组
for (int k = 0; k < arr.length; k++) {
System.out.print(arr[k] + " "); // 输出元素并用空格分隔
}
}
}输出:
12 24 25 28 76 96 101