(1)利用冒泡排序思想求二维数组中的最大值
/*
利用函数调用形式,传递二维数组名进行函数调用
设计求二维数组中最小值、最大值的函数,在主函数中调用
利用冒泡排序思想求二维数组最大值。
算法思想:先对各行进行一次冒泡排序,使每行的最后一个数为当前行中最大值,
即二维数组中的最后一列中的数,都是本行中的最大值。
然后对二维数组中的最后一列进行一次冒泡排序,得到最后一列的最后一个数为本列中的最大值,
此列最大值即为二维数组中的最大值。
注意,此时的二维数组并不是真正的排序,此方法只是为了找到最大的数。
*/
#include <iostream>
using namespace std;
void print(int array[][4]);
int max(int array[][4]); //求二维数组中最大值函数声明
int min(int array[][4]); //求二维数组中最小值函数声明
int main()
{
int a[3][4]={{7,9,8,10},{4,3,2,1},{1,6,5,0}}; //定义和初始化二维数组
int max_a,min_a,i,j;
print(a); //输出数组元素值
max_a=max(a); //函数调用求得二维数组最大值
min_a=min(a); //函数调用求得二维数组最小值
cout<<"max of the array is :"<<max_a<<endl;
cout<<"min of the array is :"<<min_a<<endl;
return 0;
}
int max(int array[][4]) //求二维数组中最大值函数定义,用冒泡排序的思想,大数后移
{
int i,j,t;
for(i=0;i<3;i++) //对每行进行一次冒泡排序,得到的每行最后一个数为本行中最大的数
{ for(j=0;j<3;j++)
if(array[i][j]>array[i][j+1])
{t=array[i][j];array[i][j]=array[i][j+1];array[i][j+1]=t;}
}
for(i=0;i<2;i++) //对最后一列进行一次冒泡排序,得到最后一个数为本列的最大值,即为数组的最大值
if(array[i][3]>array[i+1][3])
{t=array[i][3];array[i][3]=array[i+1][3];array[i+1][3]=t;}
return array[2][3];
}
int min(int array[][4]) //求二维数组中最小值函数定义,用冒泡排序的思想,小数后移
{
int i,j,t;
for(i=0;i<3;i++) //对每行进行一次冒泡排序,得到的每行最后一个数为本行中最小的数
{ for(j=0;j<3;j++)
if(array[i][j]>array[i][j+1])
{t=array[i][j];array[i][j]=array[i][j+1];array[i][j+1]=t;}
}
for(i=0;i<2;i++) //对最后一列进行一次冒泡排序,得到最后一个数为本列的最小值,即为数组的最小值
if(array[i][3]<array[i+1][3])
{t=array[i][3];array[i][3]=array[i+1][3];array[i+1][3]=t;}
return array[2][3];
}
void print(int array[][4])
{
int i,j;
cout<<"array is:"<<endl;
for(i=0;i<3;i++) //输出数组元素值
{ for(j=0;j<4;j++)
cout<<array[i][j]<<" ";
cout<<endl;
}
}
(2)利用遍历二维数组求最大值
/*
利用函数调用形式,传递二维数组名进行函数调用
设计求二维数组中最小值、最大值的函数,在主函数中调用
求最大最小方法用遍历数组元素比较法
*/
#include <iostream>
using namespace std;
int max(int array[][4]); //求二维数组中最大值函数声明
int min(int array[][4]); //求二维数组中最小值函数声明
int main()
{
int a[3][4]={{7,9,8,10},{1,2,3,4},{1,6,5,0}}; //定义和初始化二维数组
int max_a,min_a,i,j;
max_a=max(a); //函数调用求得二维数组最大值
min_a=min(a); //函数调用求得二维数组最小值
cout<<"array is:"<<endl;
for(i=0;i<3;i++) //输出数组元素值
{ for(j=0;j<4;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
cout<<"max of the array is :"<<max_a<<endl;
cout<<"min of the array is :"<<min_a<<endl;
return 0;
}
int max(int array[][4]) //求二维数组中最大值函数定义,用遍历数组元素求最大值
{
int i,j;
int result=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(array[i][j]>result)
result=array[i][j];
return result;
}
int min(int array[][4]) //求二维数组中最小值函数声明,用遍历数组元素求最大值
{
int i,j;
int result=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(array[i][j]<result)
result=array[i][j];
return result;
}