在 JavaScript 中查找未排序整数数组中的最大和最小数字

javascriptweb developmentfront end technologyobject oriented programming更新于 2024/12/8 23:40:17

在给定的问题陈述中,我们必须借助 JavaScript 功能查找未排序整数数组中的最大和最小数字。因此,我们将使用一个整数数组,并从数组中查找最小和最大的数字。

理解问题

我们的问题是在未排序整数数组中找到最大值和最小值。因此,在此任务中,我们将看到 JavaScript 中的解决方案。借助它,我们可以在不对数组进行排序的情况下确定数组中的最大和最小数字。例如,假设我们有一个未排序的数组 [11, 21, 14, 32, 20, 12],因此在这个数组中最小的数字是 11,最大的数字是 32。

给定问题的逻辑

为了解决从未排序的数组中找出最小和最大数字的问题,我们将使用一种简单的线性扫描技术。因此,首先我们将初始化两个变量来存储数组的最小和最大数字。然后我们将迭代剩余的项目并将每个项目与当前最小和最大值进行比较。如果我们找到了这些值,那么我们将在相应的变量中更新。在迭代过程结束时,我们将获得数组中最小和最大元素的值,而无需对数组进行排序。

算法

步骤 1:因为我们的任务是从给定的输入数组中找到最小值和最大值,而无需对数组进行排序。因此,我们将定义一个名为smallestAndLargest的函数,并在该函数中传递一个参数数组。

步骤2:我们已经创建了函数和输入数组。现在,我们将定义一个条件来检查数组的长度是否为空,在这种情况下我们将返回null。

步骤3:在上述条件之后,我们将声明两个变量来存储数组中最小和最大数字的值。并将它们命名为最小和最大。使用数组的第一项初始化这些变量。

步骤4:现在我们将使用循环来迭代数组的数字并检查条件,如果当前项小于最小数字,则我们将最小值更新为当前项。

步骤5:我们还将检查最大数字的条件。如果当前项大于最大数字,则我们将使用当前项更新最大值。

第 6 步:最后我们将得到数组中最小和最大的数字,因此返回这些值。

示例

// 函数用于查找最小和最大的数字
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 = minimalAndLargest(nums);
console.log("Smallest:", result.smallest);
console.log("Largest:", result.largest);

输出

Smallest: 1
Largest: 9

复杂度

在不对数组进行排序的情况下,查找数组中最小值和最大值的时间复杂度为 O(n),其中 n 是给定数组的大小。因为我们对每个项目都进行了一次迭代,以将其与当前最小值和最大值进行比较。因此,获取这些值所需的时间与输入的大小成线性关系。代码的空间复杂度为 O(1),因为我们使用了两个变量来存储最小值和最大值。

结论

在本解决方案中,我们学习了如何在不对数组进行排序的情况下查找数组中最小值和最大值。我们使用了 Javascript 的最基本功能,以线性时间复杂度获得了所需的结果。


相关文章


有用资源