본문 바로가기
공부/java

자바(java)의 최대, 최솟값 찾기

by 샤샤샤샤 2022. 11. 23.

값을 치환하기(맞교환 하기)

물이 담긴 컵과 우유가 담긴 컵이 있다.  둘의 내용물을 바꿀려면 어떻게 해야 할까? 하나의 컵이 더 필요할 것이다.

변수도 마찬가지다. 변수의 데이터를 교환하려면 새로운 변수가 필요하다.

        int a = 10;
        int b = 20;
        int temp = 0;
        temp = a; //a값을 안전하게 저장한다.
        a = b;  //a에 b의 값을 덮어쓰기한다.
        b = temp;

 

 

최댓값, 최소값 찾기

1.  Array.sort() 와 같은 함수를 이용해서 정렬한뒤, 첫번째와 마지막 요소를 출력한다.

2. for문을 이용해 전체 데이터를 순회하면서 min이나 max값보다 더 작거나 큰 값으로 재할당하는 방법.

   * 이때 min이나 max는 정수형의 최소나 최대(Integer.MIN(MAX)_VALUE)로 미리 설정해둔다.

int num[] = {5,4,2,8,9}
int min = Integer.MAX_VALUE;    ----- int최대값. 이보다 더 큰 int형은 존재할수 없다.
for(int i = 1; i<num.lenght; i++){
    if(num[i] < min){
        min = num[i];           ------ num[i]가 min보다 작으면 num[i]의 값을 min에 넣음
    }
}
public class ex59 {
    public static void main(String[] args) {
        //값의 치환(바꿔치기)
        int a = 10;
        int b = 20;
        //a변수의 값과 b변수의 값을 치환하려면?
        //temp 변수를 이용하여 값을 순차적으로 교환한다.
        int temp = 0;
        temp = a; //a값을 안전하게 저장한다.
        a = b;  //a에 b의 값을 덮어쓰기한다.
        b = temp;
        System.out.println( "a:" + a );
        System.out.println( "b:" + b );

        int[] nums = { 10, 30, 20, 50, 40 };
        temp = nums[2];
        nums[2] = nums[1];
        nums[1] = temp;

    }
}
public class ex60 {
    public static void main(String[] args) {

        //최소값/최대값 찾기
        //1. 정렬후 첫번째, 마지막번째 요소를 선택
        //2. 전체데이타를 순회하면서 min,max값보다
        //   더 작거나 큰 값과 값을 설정하는 방법
        //  이때 min값은 최대값(45 or 10000)으로 초기화하고,
        // max값은 최소값(3 or 0)으로 초기화 한다.
        System.out.println( Integer.MAX_VALUE );
        System.out.println( Integer.MIN_VALUE );

        //연습문제 40
        //최소값 구하는 순서
        //1. int min = 최대값으로 초기화
        //2. 배열을 전체 순환하면서,
        //3. min 값보다 더 작은 값을 발견하면, 그 값을 min값으로
        //   설정한다.
        //4. 순환이 종료되고 min 값을 출력한다.
        int[] nums = { 3, 25, 12, 45, 37 };
        int min = Integer.MAX_VALUE;
        for( int i=0; i<nums.length; i++){
            System.out.println( "nums[i]:"+nums[i] );
            System.out.println( "min:"+min );
            //nums[i] : 3  25  12  45  37
            //min : 21억   3    3   3   3
            if( nums[i] < min ){ //min보다 작은 값을 발견하면,
                System.out.println("min 변경됨!!!");
                min = nums[i];   //그 값을 min으로 설정한다.
                //min = 3설정됨.
            }
        }
        System.out.println( min );

        //연습문제 41 - 최대값을 출력하시오.
        //{ 3, 25, 12, 45, 37 };
        int max = Integer.MIN_VALUE;
        for( int i=0; i<nums.length; i++){
            System.out.println(nums[i]);
            if( nums[i] > max ){ //max보다 큰 값을 발견하면,
                max = nums[i];   //그 값을 max으로 설정한다.
            }
        }
        System.out.println( max );

    }
}