分治法求数组中的最大最小元素
2010-08-10 15:19
211 查看
#include<iostream> using namespace std; //分而治之法求数组中的最大最小元素 void maxmin(int i,int j,int A[],int& fmax,int& fmin); int main(){ int A[]={2,5,2,4,7,3,10,9,3}; int max,min; maxmin(0,8,A,max,min); cout<<max<<" "<<min<<endl; int i; cin>>i; return 0; } //i为要求的下界 //j为求解的上界 void maxmin(int i,int j,int A[],int& fmax,int& fmin){ //int i=0; //int j=n-1; int max1,max2,min1,min2; int mid=(i+j)/2; if(i==j) {fmax=A[i];fmin=A[i];} else if(i==j-1){ if(A[i]<=A[j]){fmin=A[i];fmax=A[j]; } else {fmin=A[i];fmax=A[j];} } else { maxmin(mid+1,j,A,max1,min1); maxmin(i,mid,A,max2,min2); fmax=max(max1,max2); fmin=min(min1,min2); } }
本文出自 “codeland” 博客,请务必保留此出处http://aaronz.blog.51cto.com/1209743/371385
相关文章推荐
- 【1】 设一个长度为10的整型数组,  0)要求每个元素的值通过scanf输入,输入完成后,  1)请顺序输出这些整数,  2)请倒序输出这些整数,  3)输出这些数中的最大值,最小值
- 【程序35】 ArrayChange.java 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 练习5: 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 用户输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 查找数组(不限维数)中的最大元素和最小元素
- 操作数组的常用方式一----获取数组元素中最大值和最小值
- 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
- 数组元素最大值和最小值
- 定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,平均值,和值,并输出出来。
- 操作数组的常用方式一----获取数组元素中最大值和最小值
- 设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。
- 设计一个最优算法来查找n个元素数组中的最大值和最小值
- 同时寻找一个数组中的最大元素和最小元素--你会有所收获
- 随机产生20个[10 , 50]的正整数存到数组中,并求数组中的所有元素最大值、最小值、平均值以及各元素之和,及第二大值。
- 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
- 给定数组,查找最小的k个元素或最大的k个元素 快速排序算法灵活应用
- 分治法寻找数组最大的两个数和最小的两个数
- 随机产生20个[10 , 50]的正整数存到数组中,并求数组中的所有元素最大值、最小值、平均值以及各元素之和,及第二大值。