算法与数据结构-------递归查找最大元素
2015-02-02 23:38
218 查看
用两种递归方式查找数组中的最大元素。
方法1:
#include <stdio.h>
#include <stdlib.h>
int cmp1(int a[],int s,int e)
{
int max1,max2;
int m;
int n = e - s + 1;
m = s + n/2 - 1;
if(n == 1)
{
return a[s];
}
else
{
max1 = cmp1(a,s+1,e);
return max1 > a[s]? max1:a[s];
}
}
方法2:
int cmp(int a[],int s,int e)
{
int max1,max2;
int m;
int n = e - s + 1;
m = s + n/2 - 1;
if(n == 1)
{
return a[s];
}
else
{
max1 = cmp(a,s,m);
max2 = cmp(a,m+1,e);
return max1 > max2? max1:max2;
}
}
int main()
{
int a[] = {3,1,4,5,0,10,3,2,4,6,7,8};
int maxIndex = sizeof(a)/sizeof(int)-1;
int max = cmp1(a,0,maxIndex); //替换为cmp有同样效果。
printf("max num %d\n",max);
}
两种方式的栈深度分别为n和log2N.
方法1:
#include <stdio.h>
#include <stdlib.h>
int cmp1(int a[],int s,int e)
{
int max1,max2;
int m;
int n = e - s + 1;
m = s + n/2 - 1;
if(n == 1)
{
return a[s];
}
else
{
max1 = cmp1(a,s+1,e);
return max1 > a[s]? max1:a[s];
}
}
方法2:
int cmp(int a[],int s,int e)
{
int max1,max2;
int m;
int n = e - s + 1;
m = s + n/2 - 1;
if(n == 1)
{
return a[s];
}
else
{
max1 = cmp(a,s,m);
max2 = cmp(a,m+1,e);
return max1 > max2? max1:max2;
}
}
int main()
{
int a[] = {3,1,4,5,0,10,3,2,4,6,7,8};
int maxIndex = sizeof(a)/sizeof(int)-1;
int max = cmp1(a,0,maxIndex); //替换为cmp有同样效果。
printf("max num %d\n",max);
}
两种方式的栈深度分别为n和log2N.
相关文章推荐
- 《数据结构与算法——C语言描述》答案 3.11 查找单链表中的特定元素(递归)
- 算法与数据结构--在顺序线性表L中查找第1个值与e满足compare()的元素的为序--算法2.5
- 算法实验一:二分查找算法改进: 当搜索元素x不存在时,返回小于x的最大元素位置i和大于x的最小元素位置j. 当搜索元素在数组中时,i和j相同,均为x在数组中的位置。
- python算法和数据结构笔记--递归--二分查找
- 【数据结构和算法】 O(1)时间取得栈中的最大 / 最小元素值
- 什么是二叉搜索树、二叉搜索树的查找(递归或循环)和二叉搜索树的查找最大最小元素
- 数据结构面试题1.2.9-查找最小的K个元素-使用最大堆
- 算法与数据结构--在顺序线性表L中查找第1个值与e满足compare()的元素的为序--算法2.5
- 算法与数据结构面试题(5)-查找最小的k 个元素
- 设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。
- 从一个集合中查找最大最小的N个元素——Python heapq 堆数据结构
- 算法与数据结构——算法题 114:类似跳表数据结构,查找元素的复杂度(腾讯2016笔试题) ? 待解决
- 设计一个最优算法来查找n个元素数组中的最大值和最小值
- 从一个集合中查找最大最小的N个元素——Python heapq 堆数据结构
- 设计一个更优算法查找一n个元素数组中的最大值和最小值
- 微软等数据结构+算法面试100题(46)-- 查找最小的k 个元素
- 第九章中位数和顺序统计学之“查找第i小的元素(递归版)平均运行时间为O(n)算法”
- 每日一道算法题7—— 查找最大(小)的k个元素
- 分治 递归 引用 求一个数组中的最大和最小元素
- 算法:查找过半元素