如何在数组中找到最大值


以下三解法可以寻找到数组中的最大值:

1、问题分解法。把题目看做两个独立的问题,而非一个问题,每次分别找出最小值和最大值即可,此时,一共需要遍历两次数组,比较次数为2N次,N表示数组的长度;

2、取单元素法。维持两个变量min和max,min标记为最小值,max标记为最大值,每次取出一个元素,先与已找到的最小值比较,再与已找到的最大值比较,此种方法只需要遍历一次数组即可;

3、取双元素法。维持两个变量min和max,min标记为最小值,max标记为最大值,每次比较相邻的两个数,较大者与max比较,较小者与min比较,通过比较找出最大值和最小值。此种方法的比较次数为1、5N次。

求数组中的最大值的六种方法

#include <stdio.h>int max(int arr[], int len){if(1 == len) // 只有一个元素{return arr[0];}int a = arr[0]; //第一个元素int b = max(arr + 1, len - 1); //第二个元素起的最大值return a > b? a : b;}int main(void){int a[] = {1,2,3,4,5,6,7,8,9,10};printf("最大值:%d\n", max(a, sizeof(a) / sizeof(a[0])))

递归求解数组中的最大值

#include <stdio.h>int max(int arr[], int len){if(1 == len) // 只有一个元素{return arr[0];}int a = arr[0]; //第一个元素int b = max(arr + 1, len - 1); //第二个元素起的最大值return a > b? a : b;}int main(void){int a[] = {1,2,3,4,5,6,7,8,9,10};printf("最大值:%d\n", max(a, sizeof(a) / sizeof(a[0])));return 0;}

改变*p,你的*p一直是个固定值,所以答案一直是a[0]啦,

要这样改:

#include<stdio.h>
#include<stdlib.h>

int main(){
int i,a[7]={30,22,322,44,54,532,2},max

求数组中的最大值的六种方法

#include <stdio.h>int max(int arr[], int len){if(1 == len) // 只有一个元素{return arr[0];}int a = arr[0]; //第一个元素int b = max(arr + 1, len - 1); //第二个元素起的最大值return a > b? a : b;}int main(void){int a[] = {1,2,3,4,5,6,7,8,9,10};printf("最大值:%d\n", max(a, sizeof(a) / sizeof(a[0])))