在 JavaScript 中查找未排序整数数组中的最大值和最小值
在这个给定的问题陈述中,我们必须借助 Javascript 功能在未排序的整数数组中找到最大值和最小值。因此,我们将使用一个整数数组,并从中找到最小值和最大值。
理解问题
我们的问题是在未排序的整数数组中找到最大值和最小值。因此,在这个任务中,我们将看到 Javascript 的解决方案。借助它,我们可以确定数组中最大值和最小值,而无需对数组进行排序。例如,假设我们有一个未排序的数组 [11, 21, 14, 32, 20, 12],那么在这个数组中,最小数字是 11,最大数字是 32。
给定问题的逻辑
为了解决从未排序数组中找到最小值和最大值的问题,我们将使用简单的线性扫描技术。因此,我们首先将初始化两个变量来存储数组的最小值和最大值。然后,我们将迭代其余项目,并将每个项目与当前的最小值和最大值进行比较。如果我们找到了这些值,我们将更新相应的变量。在迭代过程结束时,我们将拥有数组的最小值和最大值,而无需对数组进行排序。
算法
步骤 1:我们的任务是从给定的输入数组中找到最小值和最大值,而无需对数组进行排序。因此,我们将定义一个名为 smallestAndLargest 的函数,在这个函数中,我们将传递一个参数数组。
步骤 2:我们已经创建了函数和输入数组。现在,我们将定义一个条件来检查数组的长度是否为空,在这种情况下,我们将返回 null。
步骤 3:在上述条件之后,我们将声明两个变量来存储数组中最小值和最大值的值。并分别命名为 smallest 和 largest。用数组的第一个项目初始化这些变量。
步骤 4:现在,我们将使用一个循环来迭代数组中的数字,并检查条件:如果当前项目小于最小数字,我们将把 smallest 的值更新为当前项目。
步骤 5:我们还将检查最大数字的条件。如果当前项目大于最大数字,我们将用当前项目更新 largest 的值。
步骤 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 的非常基本的功能来获得具有线性时间复杂度的期望结果。