zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    springboot框架
    java是什么
    Java文件读写
    Spring Cloud学习入门路线方案
    Spring Cloud学习路线
    Lucene——索引过程分析Index
    Lucene学习入门——核心类API
    爬虫技术框架——Heritrix
    Spring Cloud入门程序——注册服务提供者
    Spring Cloud入门程序
  • 原文地址:https://www.cnblogs.com/ZhuLuoJiGongYuan/p/9464979.html
Copyright © 2011-2022 走看看