• 从数组中找出最大的和最小的数


    给定一整形数组a,要求从中找出最大的数和最小的数,并计算时间复杂度。

    实现1:

    遍历数组,每次取数组中一个元素, 分别与当前最大值和最小值进行比较,时间复杂度O(2n)

       1: void search(int a[], size_t n, int &max, int &min)
       2: {
       3:     int i;
       4:     max = min = a[0];
       5:     
       6:     for (i = 1; i < n; ++i) {
       7:         if (a[i] > max)
       8:             max = a[i];
       9:         if (a[i] < min)
      10:             min = a[i];                
      11:     }
      12: }

    实现2:

    遍历数组,每次取数组中两个元素进行比较,然后将大的与当前的最大值进行比较,小的与当前的最小值进行比较,时间复杂度O(3n/2)

       1: void search(int a[], size_t n, int &max, int &min)
       2: {
       3:     int i;
       4:     max = min = a[0];
       5:     
       6:     for (i = 1; i < n/2; ++i) {
       7:         if (a[i*2] > a[i*2+1]) {
       8:             if (a[i*2] > max)
       9:                 max = a[i*2];
      10:             if (a[i*2+1] < min)
      11:                 min = a[i*2+1];        
      12:         } else {
      13:             if (a[i*2+1] > max)
      14:                 max = a[i*2+1];
      15:             if (a[i*2] < min)
      16:                 min = a[i*2];
      17:         }
      18:     }
      19:     
      20:     
      21:     if (n%2 != 0) {
      22:         max = (max >= a[n-1]) ? max : a[n-1];
      23:         min = (min <= a[n-1]) ? min : a[n-1];
      24:     }
      25: }
  • 相关阅读:
    leetcode-237-删除链表中的节点
    leetcode-125-验证回文串
    leetcode-217-存在重复元素
    leetcode-189-旋转数组
    leetcode-121-买卖股票的最佳时机
    leetcde-27-移除元素
    redis相关
    leetcode-26-删除排序数组中的重复项
    leetcode-16-最接近的三数之和
    基础-递归
  • 原文地址:https://www.cnblogs.com/newth/p/2478051.html
Copyright © 2020-2023  润新知