同时求数列的最大值与最小值

package agrisom;
/**
 * 同时求最大值与最小值
 */
public class FindMaxAndMin {
    public void findMaxAndMin(int [] array){
        int length=array.length;
        int max,min;
        if(length==0){
            System.out.println("array empty");
            System.exit(1);
        }else if(length==1){
            max=min=array[0];
        }else if(length==2){
            max=array[0]>array[1] ? array[0] : array[1];
            min=array[0]>array[1] ? array[1] : array[0];
        }
        
        int i;
        if((length & 1)==1){ //数组长度为奇数
            max=min=array[0];
            i=1;
        }else{               //数组长度为偶数
            max=array[0]>array[1] ? array[0] : array[1];
            min=array[0]>array[1] ? array[1] : array[0];
            i=2;
        }
        
        for(;i<length;i+=2){
            if(array[i] > array[i+1]){
                max=max<array[i] ? array[i] : max;
                min=min>array[i+1] ? array[i+1] : min;
            }else{
                max=max<array[i+1] ? array[i+1] : max;
                min=min>array[i] ? array[i] : min;
            }
        }
        
        System.out.println("max: "+max);
        System.out.println("min: "+min);
    }
    
    public static void main(String [] args){
        FindMaxAndMin fmm=new FindMaxAndMin();
        fmm.findMaxAndMin(new int []{4,3,6,9,1,56,22});
        fmm.findMaxAndMin(new int []{4,3,6,9,1,56});
        fmm.findMaxAndMin(new int []{4,3});
        fmm.findMaxAndMin(new int []{2});
        fmm.findMaxAndMin(new int []{});
    }
}
/**
运行结果:
max: 56
min: 1
max: 56
min: 1
max: 4
min: 3
max: 2
min: 2
array empty
*/


在Matlab中,可以使用`max``min`函数来数列最大值最小值,以下是详细介绍: ### 向量的最大值最小值 - **向量最大值**: - `y = max(X)`:返回向量`X`的最大值存入`y` ,如果`X`中包含复数元素,则按模取最大值。 - `[y,I] = max(X)`:返回向量`X`的最大值存入`y`,最大值的序号存入`I`,如果`X`中包含复数元素,则按模取最大值。 - **向量最小值**:`min(X)`的用法`max(X)`完全相同。 示例代码如下: ```matlab X = [-43, 72, 9, 16, 23, 47]; y_max = max(X); % 向量X中的最大值 [y_max, I_max] = max(X); % 向量X中的最大值及其该元素的位置 y_min = min(X); % 向量X中的最小值 [y_min, I_min] = min(X); % 向量X中的最小值及其该元素的位置 ``` ### 矩阵的最大值最小值 - **矩阵最大值**: - `max(A)`:返回一个行向量,向量的第`i`个元素是矩阵`A`的第`i`列上的最大值。 - `[Y,U] = max(A)`:返回行向量`Y``U`,`Y`向量记录`A`的每列的最大值,`U`向量记录每列最大值的行号。 - `max(A,[],dim)`:`dim`取 1 或 2 。`dim`取 1 时,该函数`max(A)`完全相同;`dim`取 2 时,该函数返回一个列向量,其第`i`个元素是`A`矩阵的第`i`行上的最大值。 - **矩阵最小值**:`min`函数的用法`max`完全相同。 示例代码如下: ```matlab A = [1, 2, 3; 4, 5, 6; 7, 8, 9]; max_col = max(A); % 返回每列的最大值 [max_col, row_index] = max(A); % 返回每列的最大值及其行号 max_row = max(A, [], 2); % 返回每行的最大值 min_col = min(A); % 返回每列的最小值 [min_col, row_index] = min(A); % 返回每列的最小值及其行号 min_row = min(A, [], 2); % 返回每行的最小值 ``` ### 两个向量或矩阵对应元素的比较 函数`max``min`还能对两个同型的向量或矩阵进行比较: - `U = max(A,B)`:`A`、`B`是两个同型的向量或矩阵,结果`U`是`A`、`B`同型的向量或矩阵,`U`的每个元素等于`A`、`B`对应元素的较大者。 - `U = max(A,n)`:`n`是一个标量,结果`U`是`A`同型的向量或矩阵,`U`的每个元素等于`A`对应元素`n`中的较大者。 `min`函数的用法`max`完全相同。 示例代码如下: ```matlab A = [1, 2, 3]; B = [4, 1, 6]; U_max = max(A, B); % 对应元素比较取较大值 U_min = min(A, B); % 对应元素比较取较小值 n = 2; U_max_n = max(A, n); % 标量比较取较大值 U_min_n = min(A, n); % 标量比较取较小值 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值