求二維陣列最大最小值----利用函式呼叫形式(2種方法)
阿新 • • 發佈:2019-02-06
(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; }