java答题格式_学习java,格式、知识点会了,不会做题怎么办?

实现一个需求的正常流程应该是这样的:

1. 分析需求

2. 思考解决方案

3. 将解决方法用程序语言表达出来

----------------------------------------

下面的内容过于基础,建议选择性阅读

----------------------------------------

接下来按照这个思路解决两个问题。控制台打印Hello World 。

1. 需求不难理解

2. 控制台打印的话用System.out.print()方法好了

敲代码:

// 1. 我们的程序需要运行起来,所以首先要有一个包含main方法的主类public class ConsolePrint {

public static void main(String[] args) {

// 2. 打印 Hello World System.out.print("Hello World");

}

}

按照上面的方法,我们实现了一个简单的需求。然后来看一下第二个需求:接收一个int类型的数组,使用冒泡排序对数组排序,返回排序之后的数组。

假设题主不知道, 我先声明一下:我只是用冒泡排序举例,冒泡排序算法不是我创造的。

1. 需求分析

为了解决这个问题,我们需要定义一个方法。方法接收一个int类型的数组,对数组排序之后将结果返回给调用者。

2. 实现方法(思考解决方法,并把方案转换为代码)冒泡排序:遍历集合,依次比较相邻两个元素,如果元素的位置不符合要求则将这两个元素交换位置,直到集合中没有可以交换的元素。

假设给定的数组为: [1, 3, 5, 2, 4] , 从低到高排序。

第一次排序 (加粗的元素表示正在比较的元素):

[1, 3, 5, 2, 4] -> [1, 3, 5, 2, 4] -> [1, 3, 5, 2, 4] ->交换->

[1, 3, 2, 5, 4] ->交换

结果:[1, 3, 2, 4, 5]

遍历并比较:

// arr 为给定的数组int length = arr.length;

for (int m = 0; m > 0;) {

for (int n = 0;

// 每个元素要与之后的元素(n + 1)进行比较, length - 1 为数组中最后一个元素的下标 // n < length - 1 使 n + 1 的最大值为 length - 1, 避免 IndexOutOfBoundException n < length - 1; n++) {

// 判断相邻的元素是否符合从小到大的排序规则 if (arr[n] > arr[n+1]) {

// 交换元素位置 int temp = arr[n];

arr[n] = arr[n+1];

arr[n+1] = temp;

// 记录此轮遍历被交换的元素个数 m++;

}

}

}

第二次排序:

[1, 3, 2, 4, 5] -> [1, 3, 2, 4, 5] ->交换-> [1, 2, 3, 4, 5]

经过第一次排序,数组中最大的元素5 被交换到最后的位置,在第二轮我们可以跳过这个元素。经过观察,每轮排序之后当前的最大元素都会被交换到尾部,利用这一点可以稍微对算法进行一点优化。

public int[] bubbleSort(int[] arr) {

int length = arr.length;

for (int m = 0;

// m为啥小于length - 1 m < length - 1; m++) {

for (int n = 0; n < length - 1 - m; n++){

if (arr[n] > arr[n+1]) {

int temp = arr[n];

arr[n] = arr[n+1];

arr[n+1] = temp;

}

}

}

}

到这里,我们已经根据自己的思路将冒泡排序实现出来了;

总结一下:试着用代码陈述自己,不要想着创造能自行解决问题的代码。

我是这样想的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值