博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6.用递归实现求数组中的任意次最值。
阅读量:6862 次
发布时间:2019-06-26

本文共 1377 字,大约阅读时间需要 4 分钟。

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     else28     {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     else52     {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 
66 int main(void)67 {68 int arr[] = {
10,1,8,28,11,20,9};69 printf("%d\n",func(arr,sizeof(arr)/sizeof(int),5));//打印第n大的元素70 return 0;71 }

 

转载于:https://www.cnblogs.com/ZhuLuoJiGongYuan/p/9464979.html

你可能感兴趣的文章
dpdk基础模块之rte_ring
查看>>
冒泡排序
查看>>
Mysql字段合并
查看>>
五笔反查工具
查看>>
python 类的继承
查看>>
python 爬取<a>标签内href的方法及遇到的问题
查看>>
.Net 环境下比较各种数据库插入操作的性能
查看>>
凸函数的形式
查看>>
参数 题外记录“ { int.Parse(string); 也可以将一个字符串类型转成INT类型}”
查看>>
CSS: rem
查看>>
驰骋工作流引擎-流程数据md5加密
查看>>
javascript基础学习(一)
查看>>
MSSQL排序规则冲突
查看>>
synchronize模块
查看>>
批量修改文件名(Python)
查看>>
枚举排列
查看>>
MapReduce的手机流量统计的案例
查看>>
zabbix_get 命令介绍
查看>>
jQuery属性操作之类样式操作
查看>>
JavaScript跨域总结与解决办法
查看>>