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


    给定一整形数组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: }
  • 相关阅读:
    gps示例代码
    UART 串口示例代码
    Linux soft lockup 和 hard lockup
    Linux嵌入式kgdb调试环境搭建
    Linux嵌入式GDB调试环境搭建
    Linux-workqueue讲解
    USB之hub3
    USB之设备插入波形变化2
    我运营公众号这一个月
    从12306帐号泄漏谈用户密码安全
  • 原文地址:https://www.cnblogs.com/newth/p/2478051.html
Copyright © 2020-2023  润新知