取出任意的一维整数数组中最大的值--
我首先考虑的是,该数组为一维数组。(如果是二维数组,思路是化为一维数组,再转化为新的二维数组)
我希望该数组进行比较的方式是,两两比较,保留较大的元素。
为了更直观的进行两两比较,将数组变成含有n个数组,每个数组含有两个元素。
不断循环,此过程,直到数组元素剩下两个即可。
注意:以下代码在DEV C++ 可以运行,测试了几次,运行成功。
但是在VS2019,则无法运行......应该是不支持VAL数组。
不知道该如何解决,以下是代码, 请指正:
// 编写一个函数,返回存储在int类型数组中的最大值,并在一个简单的程序中测试该函数。 # include# define ELEMENTS 2 // 二维数组中每个数组的元素个数 int aaa(int arr[],int m); int main() { int max = 0; int arr[] = {1,2,4,19087,19876,19654,20197,10564,12076,1098,1897}; int a = sizeof(arr)/sizeof(arr[0]); //求数组元素个数 max = aaa(arr, a); //传递数组名,和元素个数 printf("\nThe max num in the arrary is %d\n",max); return 0; } int aaa(int arr[], int m) { int n = (m+1)/2; int temp[n][ELEMENTS]; if(m%2 == 0) //元素为偶数个时 { int k = 0; for (int i = 0; i < n;i++) for (int j = 0; j < 2; j++) temp[i][j] = arr[k++]; } else { arr[m] = 0; //元素为奇数个时,给指向最后一个元素的下一个位置赋值为0 for (int i = 0; i < n;i++) for (int j = 0; j < 2; j++) temp[i][j] = arr[m--]; //倒序赋值 } int temp1[n]; for (int i = 0; i < n ;i++) { temp1[i] = temp[i][0]>temp[i][1]? temp[i][0]:temp[i][1]; } if(sizeof(temp1)/sizeof(temp1[0]) >2 ) // 数组大小的条件 { int x = sizeof(temp1)/sizeof(temp1[0]) ; aaa(temp1,x); //递归 } else return temp1[0]>temp1[1]?temp1[0]:temp1[1]; }