• 6.用递归实现求数组中的任意次最值。


     1 //递归实现求任意次最值
     2 //求数组元素中第N大的元素
     3 
     4 
     5 /*优化版本*/
     6 int getMax(int *p, int len,int num)//在当前所有项中得到比num小的最大数
     7 {   int max = 1<<31;//int能表示的最小负数
     8     int i;
     9     for(i = 0;i < len;i++)
    10     {
    11         if( p[i]< num)
    12         {
    13             if(max < p[i])
    14                 max = p[i];
    15         }
    16     }
    17     return max;
    18 }
    19 
    20 int func(int* p,int len,int n)//返回数组元素中第n大的元素
    21 {
    22     int nvalue;
    23     if(n == 1)
    24     {
    25          nvalue = getMax(p,len,~(1<<31));
    26     }
    27     else
    28     {
    29          nvalue = getMax(p,len,func(p,len,n-1));
    30     }
    31     return nvalue;
    32 }
    33 
    34 
    35 
    36 /*基础版本*/
    37 int func2(int* p,int len,int n)//返回数组元素中第n大的元素
    38 {
    39     int i;
    40     int max = 1<<31;//int能表示的最小负数
    41 
    42     if(n == 1)
    43     {
    44         int num = ~(1<<31);
    45         for(i = 0;i < len;i++)
    46         {
    47             if(max < p[i])
    48                  max = p[i];
    49         }
    50     }
    51     else
    52     {
    53         for(i = 0;i < len;i++)
    54         {
    55             if( p[i]< func(p,len,n-1))
    56             {
    57                 if(max < p[i])
    58                     max = p[i];
    59             }
    60         }
    61     }
    62     return max;
    63 }
    64 
    65 #include <stdio.h>
    66 int main(void)
    67 {
    68     int arr[] = {10,1,8,28,11,20,9};
    69     printf("%d
    ",func(arr,sizeof(arr)/sizeof(int),5));//打印第n大的元素
    70     return 0;
    71 }
  • 相关阅读:
    MySQL 基础 查询
    Mysql+keepalived双主
    Kubernetes(二)K8S基础架构
    Kubernetes(一)K8S入门
    Docker (五) 利用Dockerfile创建Nginx镜像
    Docker (四) 使用Dockerfile的方式构建镜像
    Docker (三) 使用commit创建Docker镜像
    Docker (二) Docker网络配置
    Ansible (四) 角色Roles
    Docker (一) Docker入门
  • 原文地址:https://www.cnblogs.com/ZhuLuoJiGongYuan/p/9464979.html
Copyright © 2020-2023  润新知