数据结构——算法之(041)(寻找数组中的最大值和最小值)

【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:[email protected]】

题目:

寻找数组中的最大值和最小值

题目分析:

1、时间复杂度0(1)

算法实现:

#include <stdio.h>

void get_array_max_and_min(int *array, int array_size, int *max, int *min)
{
	if(array_size < 1)
		*max = *min = 0;
	else if(array_size == 1)
		*max = *min = array[0];

	if(array[0] > array[1])
		*max = array[0], *min = array[1];
	else
		*min = array[0], *max = array[1];

	int i=2;
	for(; i<array_size; ++i)
	{
		if(array[i] < *min)
			*min = array[i];
		else if(array[i] > *max)
			*max = array[i];
	}
}

int main()
{
	int array[] = {};
	//int array[] = {2, 5, 6, 9, 12, 38, 11, 9, 0, 7, 1, -2, 12};
	int max, min;
	get_array_max_and_min(array, sizeof(array)/sizeof(int), &max, &min);
	printf("max = %d, min = %d\n", max, min);
}
时间: 2024-10-12 07:24:02

数据结构——算法之(041)(寻找数组中的最大值和最小值)的相关文章

第2章 数字之魅——寻找数组中的最大值和最小值

寻找数组中的最大值和最小值 问题描述 对于一个由N个整数组成的数组,需要比较多少次才能把最大和最小的数找出来呢? 分析与解法 [解法一] 可以把寻找数组中的最大值和最小值看成是两个独立的问题,我们只要分别求出数组的最大值和最小值即可解决问题.最直接的做法是先扫描一遍数组,找出最大的数以及最小的数.这样,我们需要比较2*(N-1)次才能找出最大的数和最小的数.代码如下: 1 package chapter2shuzizhimei.findminmax; 2 /** 3 * 寻找数组中的最大值和最小

编程之美3:寻找数组中的最大值和最小值以及最大值和次大值

很开心,这是今天的第三篇文章啦!下午健身也感觉非常过瘾,托付宿舍妹子从日本代购的护肤品也到了.耳边漂浮着Hebe田馥甄的<魔鬼中的天使>文艺的声线,一切都好棒,O(∩_∩)O哈哈~.爱生活,爱音乐,爱运动,额,当然还有要爱学习啦!加油(^ω^) 额,扯远了.第三篇是关于寻找数组中的最大值和最小值.第一次看到这个题目的时候,楼主稍微鄙视了一下,因为觉得这个题目有什么好做的.但是楼主还是看了看<编程之美>上的写的,发现还是有必要记录一下,不一样的思考方式.很赞!大家和楼主一起哦,Are

2.10 用最少次数寻找数组中的最大值和最小值[find min max of array]

[本文链接] http://www.cnblogs.com/hellogiser/p/find-min-max-of-array.html [题目] 对于一个由N个整数组成的数组,需要比较多少次才能把最大和最小的数找出来呢? [分析] 1. 遍历两次数组,分别找出最大值和最小值,需要进行 2N 次比较. 2. 将数组中的元素分组,按顺序将数组中相邻的两个数分在同一组,用Max和Min来存储最大值和最小值.同一组比较完之后,较小的数与当前的最小值比较,如该数小于当前最小值,更新Min:较大的数与当

编程之美2.10 寻找数组中的最大值和最小值

这个问题其实很容易解决,就是循环遍历一遍数组,然后找到数组中存在的最大值和最小值就可以了,书中主要讨论的问题是比较次数较小的方法,不过,书中已经证明了,无论用什么方法最少的比较次数也就是循环遍历一遍的比较,结果是O(1.5N)的,所以,很容易的可以解决这个问题. 第一种方法: 函数声明: void DutFindMaxAndMinInArray_1(int*, int, int&, int&); 源代码如下: /*基本的解法寻找最大值和最小值*/ bool _DutFindMaxAndMi

【编程之美】寻找数组中的最大值和最小值

数组是最简单的一种数据结构.我们经常碰到的一个基本问题,就是寻找整个数组中最大的数,或者最小的数.这时,我们都会扫描一遍数组,把最大(最小)的数找出来.如果我们需要同时找出最大和最小的数呢? 对于一个由N个整数组成的数组,需要比较多少次才能把最大和最小的数找出来呢? 分析与解法 解法一:分别求最大和最小值 可以分别求出数组的最大值和最小值,这样,我们需要比较2N次才能求解. 解法二:分组求解 (1) 按顺序将数组中相邻的两个数分在同一组: (2) 比较同一组的两个数,将大的数放在偶数位上,小的放

数字之魅:寻找数组中的最大值和最小值

数组是最简单的一种数据结构.我们经常碰到的一个基本问题,就是寻找整个数组中最大的数,或者最小的数.这时,我们都会扫描一遍数组,把最大(最小)的数找出来.如果我们需要同时找出最大和最小的数呢? 对于一个由N个整数组成的数组,需要比较多少次才能把最大和最小的数找出来呢? 这个题目比价简单,主要方案如下: 方案一:分别求最大和最小值.这是一种比较常规的解法.可以分别求出数组的最大值和最小值,这样,我们可以采用最基本的冒泡思想遍历两次(2N)就能求解. 方案二:分组求解.由于前面的需要遍历2N次.这里为

编程之美----寻找数组中的最大值和最小值

对于一个由N个整数组成的数组,需要比较多少次才能把最大和最小的数找出来呢? 解法:最简单的是扫描一遍数组,需要比较2*N次才能求解. 解法二:首先在概念上把连个相邻的数分在同一组,只是想象而已,无须任何操作.然后比较同一组的奇数位数字和偶数位数字,将较大的数放在偶数位上,较小的数放在奇数位上.N/2次比较久可以调好.然后求出偶数位上的Max,和奇数位上的Min,各须比较N/2次.总共须比较1.5*N次.  若不破坏原数组,只需用两个变量Max和Min来存储当前的最大值和最小值,当比较完奇数位和偶

寻找数组中的最大值最小值

解法一: 分别求出数组中的最大值和最小值.先扫描一遍数组,找出最大的数和最小的数.需要比较2*N次. 解法二: 一般情况下,最大值和最小值不相同.所以把数组分成两部分,然后再从这两部分中分别找出最大值和最小值. 最后,从奇偶数位上分别求出Max=9,Min=3,各需要比较N/2次,整个算法共需要比较1.5*N次. 解法三: 解法二破坏了数组,如果在遍历过程中进行比较,而不需要交换元素,就可以不破坏数组了.首先仍然按顺序将数组中相邻的两个数分在同一组(概念上的分组),然后利用两个变量Max,和Mi

C#获取一个数组中的最大值、最小值、平均值

C#获取一个数组中的最大值.最小值.平均值 1.给出一个数组 1 int[] array = new int[] { 1,2,4,3,0,-1,34,545,2,34}; 2.数组Array自带方法 本身是直接可以调用Min(),Max(),Average()方法来求出 最小值.最大值.平均值 1 Console.WriteLine("--------------Array自身方法-----------------"); 2 Console.WriteLine("Min:{0