JavaScript 找到未排序整数数组中最大和最小的值
根据给定的问题,我们需要使用JavaScript功能找到未排序整数数组中的最大和最小值。所以我们将使用一个整数数组,并从数组中找到最小和最大的数。
理解问题
我们的问题是在一个未排序的整数数组中找到最大和最小值。所以在这个任务中,我们将看到一个JavaScript的解决方案。通过它,我们可以在不对数组进行排序的情况下确定数组中的最大和最小数。例如,假设我们有一个未排序的数组[11, 21, 14, 32, 20, 12],在这个数组中,最小的数是11,最大的数是32。
解决问题的逻辑
为了解决从未排序的数组中找到最小和最大数的问题,我们将使用一种简单的线性扫描技术。首先,我们将初始化两个变量来存储数组的最小和最大数。然后,我们将遍历剩余的项目,并将每个项目与当前的最小和最大值进行比较。如果我们找到这些值,我们将在相应的变量中进行更新。在迭代过程结束时,我们将获得数组中最小和最大元素的值,而无需对数组进行排序。
步骤
步骤1: 由于我们的任务是在不对数组进行排序的情况下找到给定输入数组的最小和最大值,所以我们将定义一个名为smallestAndLargest的函数,并在该函数中传递一个参数数组。
步骤2: 我们已经创建了函数和输入数组。现在,我们将定义一个条件来检查数组的长度是否为空,在这种情况下,我们将返回null。
步骤3: 在上述条件之后,我们将声明两个变量来存储数组中最小和最大数的值,并将它们命名为smallest和largest。将这些变量初始化为数组的第一个项。
步骤4: 现在,我们将使用循环来迭代数组的数字,并检查以下条件:如果当前项小于最小数,则将最小数的值更新为当前项。
步骤5: 我们还将检查最大数的条件。如果当前项大于最大数,则将最大数的值更新为当前项。
步骤6: 最后,我们将得到数组的最小和最大数,因此返回这些值。
示例
// Function to find the smallest and largest number
function smallestAndLargest(arr) {
if (arr.length === 0) {
return null; // Empty array case
}
let smallest = arr[0];
let largest = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] < smallest) {
smallest = arr[i];
} else if (arr[i] > largest) {
largest = arr[i];
}
}
return { smallest, largest };
}
const nums = [4, 2, 9, 1, 7, 5];
const result = smallestAndLargest(nums);
console.log("Smallest:", result.smallest);
console.log("Largest:", result.largest);
输出
Smallest: 1
Largest: 9
复杂性
在不对数组进行排序的情况下,找到最小值和最大值的时间复杂度为O(n),其中n为给定数组的大小。因为我们已经遍历每个项目一次,将其与当前最小值和最大值进行比较。因此,获取这些值的时间与输入的大小呈线性关系。代码的空间复杂度为O(1),因为我们使用了两个变量来存储最小值和最大值的值。
结论
在这个解决方案中,我们学习了如何在不排序数组的情况下找到数组的最小值和最大值。我们使用了Javascript的基本功能来以线性时间复杂度获得所需的结果。