简介
在这个实验中,你将学习如何在 Java 中检查一个数字数组是否已排序。我们将探讨比较相邻元素的基本概念,这是许多排序算法的核心思想。你将学习如何检查数组是升序还是降序排列,以及如何处理元素相等的情况。在本实验结束时,你将对判断数组是否已排序所需的逻辑有深入的理解。
在这个实验中,你将学习如何在 Java 中检查一个数字数组是否已排序。我们将探讨比较相邻元素的基本概念,这是许多排序算法的核心思想。你将学习如何检查数组是升序还是降序排列,以及如何处理元素相等的情况。在本实验结束时,你将对判断数组是否已排序所需的逻辑有深入的理解。
在这一步中,我们将开始探索比较相邻元素的基本概念,这是许多排序算法的核心思想。排序是将元素按特定顺序(如升序或降序)排列的过程。
假设你有一个数字列表,你想将它们按从小到大的顺序排列。一种简单的开始方法是查看相邻的两个数字,并确定哪个应该排在前面。
让我们创建一个简单的 Java 程序来演示这个概念。我们将创建一个比较两个数字的类。
如果 HelloJava.java
文件仍在 WebIDE 编辑器中打开,请打开它。我们将修改这个文件来编写新程序。
将文件的全部内容替换为以下代码:
public class CompareNumbers {
public static void main(String[] args) {
int number1 = 15;
int number2 = 10;
System.out.println("Comparing " + number1 + " and " + number2 + ":");
if (number1 > number2) {
System.out.println(number1 + " is greater than " + number2);
} else if (number1 < number2) {
System.out.println(number1 + " is less than " + number2);
} else {
System.out.println(number1 + " is equal to " + number2);
}
}
}
让我们看看这段代码的新部分:
public class CompareNumbers
:我们将类名改为 CompareNumbers
,以更好地反映程序的功能。请记住,文件名必须与类名匹配,因此我们稍后需要重命名文件。int number1 = 15;
和 int number2 = 10;
:这两行声明了两个整数变量 number1
和 number2
,并为它们赋了初始值。System.out.println("Comparing " + number1 + " and " + number2 + ":");
:这行代码打印一条消息,表明正在比较哪些数字。if (number1 > number2)
:这是一个 if
语句。它检查括号内的条件 (number1 > number2
) 是否为真。如果为真,则执行 if
语句后面紧跟的花括号 {}
内的代码。else if (number1 < number2)
:这是一个 else if
语句。如果 if
语句中的条件为假,则检查这个条件 (number1 < number2
)。如果为真,则执行其花括号内的代码。else
:这是一个 else
语句。如果 if
和 else if
条件都不为真,则执行 else
块内的代码。System.out.println(...)
:这些行根据比较结果打印消息。保存文件(Ctrl+S 或 Cmd+S)。
现在,我们需要重命名文件以匹配新的类名。在终端中,确保你位于 ~/project
目录下:
cd ~/project
使用 mv
命令重命名文件:
mv HelloJava.java CompareNumbers.java
此命令将文件 HelloJava.java
移动(重命名)为 CompareNumbers.java
。
现在,编译新程序:
javac CompareNumbers.java
如果编译成功,你应该看不到任何输出。
最后,运行编译后的程序:
java CompareNumbers
你应该会看到指示比较结果的输出:
Comparing 15 and 10:
15 is greater than 10
你已经成功创建并运行了一个 Java 程序,该程序比较两个相邻元素并打印结果。这种简单的比较是更复杂排序算法的基础。
在上一步中,我们学习了如何比较两个数字。现在,让我们在此基础上进行扩展,检查一对相邻数字是按升序还是降序排列。这是考虑排序时的另一个基本概念。
升序是指将元素按从小到大的顺序排列(例如,1、5、10)。降序是指将元素按从大到小的顺序排列(例如,10、5、1)。
我们将修改 CompareNumbers.java
程序来检查这些特定的排序顺序。
在 WebIDE 编辑器中打开 CompareNumbers.java
文件。
将现有代码替换为以下代码:
public class CheckOrder {
public static void main(String[] args) {
int number1 = 15;
int number2 = 10;
System.out.println("Checking order of " + number1 + " and " + number2 + ":");
if (number1 < number2) {
System.out.println("The numbers are in ascending order.");
} else if (number1 > number2) {
System.out.println("The numbers are in descending order.");
} else {
System.out.println("The numbers are equal.");
}
}
}
以下是我们所做的更改:
public class CheckOrder
:我们再次将类名改为 CheckOrder
。我们需要重命名文件以匹配类名。if
条件现在检查 number1
是否小于 number2
。如果为真,则表示它们是升序排列。else if
条件检查 number1
是否大于 number2
。如果为真,则表示它们是降序排列。else
块处理两个数字相等的情况。保存文件(Ctrl+S 或 Cmd+S)。
在终端中,确保你位于 ~/project
目录下:
cd ~/project
重命名文件以匹配新的类名:
mv CompareNumbers.java CheckOrder.java
编译修改后的程序:
javac CheckOrder.java
同样,没有输出表示编译成功。
运行程序:
java CheckOrder
当 number1 = 15
且 number2 = 10
时,输出应该是:
Checking order of 15 and 10:
The numbers are in descending order.
让我们快速修改数字以查看升序的情况。在编辑器中打开 CheckOrder.java
并更改值:
public class CheckOrder {
public static void main(String[] args) {
int number1 = 5; // Changed from 15
int number2 = 8; // Changed from 10
System.out.println("Checking order of " + number1 + " and " + number2 + ":");
if (number1 < number2) {
System.out.println("The numbers are in ascending order.");
} else if (number1 > number2) {
System.out.println("The numbers are in descending order.");
} else {
System.out.println("The numbers are equal.");
}
}
}
保存文件。
再次编译程序:
javac CheckOrder.java
运行程序:
java CheckOrder
现在输出应该反映升序排列:
Checking order of 5 and 8:
The numbers are in ascending order.
你已经成功修改了程序,以检查两个相邻数字是按升序还是降序排列。这是理解排序算法如何确定元素正确位置的关键一步。
在前面的步骤中,我们比较了两个数字,并检查它们是按升序还是降序排列。我们还考虑了两个数字相等的情况。在这一步中,我们将专门关注处理相邻元素相同的场景。
在排序时,相等元素的顺序通常对最终的排序结果没有影响,但对于我们的比较逻辑来说,正确识别这种情况很重要。我们当前的 CheckOrder.java
程序已经通过 else
块处理了这种情况。让我们明确地测试这个情况。
在 WebIDE 编辑器中打开 CheckOrder.java
文件。
将 number1
和 number2
的值修改为相等:
public class CheckOrder {
public static void main(String[] args) {
int number1 = 7; // Changed to 7
int number2 = 7; // Changed to 7
System.out.println("Checking order of " + number1 + " and " + number2 + ":");
if (number1 < number2) {
System.out.println("The numbers are in ascending order.");
} else if (number1 > number2) {
System.out.println("The numbers are in descending order.");
} else {
System.out.println("The numbers are equal.");
}
}
}
保存文件(Ctrl+S 或 Cmd+S)。
在终端中,确保你位于 ~/project
目录下:
cd ~/project
编译修改后的程序:
javac CheckOrder.java
没有输出表示编译成功。
运行程序:
java CheckOrder
当两个数字都设置为 7 时,输出现在应该是:
Checking order of 7 and 7:
The numbers are equal.
这证实了我们的程序能够正确识别两个相邻数字相等的情况。处理这种情况对于完善我们的比较逻辑很重要。
在排序算法的上下文中,当相邻元素相等时,它们已经处于有效的相对顺序(根据严格程度,升序和降序都可以被认为是成立的,但通常它们只是被认为“相等”,不需要进行交换)。
你现在已经成功测试了相邻元素相等的情况,完成了我们为排序目的对两个相邻数字进行比较的探索。
在本次实验中,我们首先探索了比较相邻元素的基本概念,这是排序算法的核心思想。我们学习了如何创建一个简单的 Java 程序来比较两个数字,并判断一个数字是大于、小于还是等于另一个数字。这涉及到理解 Java 中变量声明、赋值和条件语句(if
、else if
、else
)的基本语法。我们还练习了修改现有的 Java 文件,并了解了类名与文件名保持一致的重要性。
基于比较相邻元素的概念,我们进一步扩展了知识,以检查数字序列中的升序和降序排列。这需要将比较逻辑迭代应用于多个元素。最后,我们处理了在排序检查过程中遇到相等元素的情况,确保我们的逻辑能够正确处理相邻元素值相同的情况。这些步骤为你提供了在 Java 中以编程方式判断数组是否已排序的基础知识。