JAVA/문제 및 디버깅표

최대값 구하기 알고리즘

hyun9_9 2023. 11. 23. 15:03

5개의 서로 다른 정수 데이터를 저장한 배열이 존재합니다

가장 큰값을 가진 index의 위치와

그 값(가장 큰 값)을 출력

한글 코딩

인덱스 1번의 값을 max로 지정한후 차례대로 다음 인덱스와 비교하여 
크면 max를 다음 인덱스의 값으로 바꾸고 다음 인덱스 이동 
아니면 그냥 다음인덱스로 이동

 

디버깅 표

max 사용
maxIndex   max    i     i<5  max<datas[i]
--------------------------------------------
    0           2        1       T         T
    1           3        2       T         F
                           3       T         T
    3           5        4       T         F
                           5       F 

 

public class Test01 {
	public static void main(String[] args) {
		int[] datas =new int [5];
		datas[0]=2;
		datas[1]=3;
		datas[2]=1;
		datas[3]=5;
		datas[4]=4;
		
		System.out.print("[ ");
		for(int data:datas) {
			System.out.print(data+" ");
		}
		System.out.println("]");
		int max=datas[0];
		//max 현재 예상중인 가장 큰값
		int maxIndex=0;
		//maxIndex max가 저장된 index 위치
		//0 권장 비교를 [1] index 부터 [4] index까지 
		//비교를  2번째 데이터부터 5번째 데이터까지
		//for문!
		for(int i=1;i<datas.length;i++ ) {
			if(datas[i]>max) {//내가 예상한 max보다 크다면
				//너가 max해
				max=datas[i];
				maxIndex=i;
			}
		}
		System.out.println("최대값은 "+max+"이고,");
		System.out.println("위치는 ["+maxIndex+"] 입니다.");
	}
}

 

 

디버깅 표

data[maxIndex]사용
maxIndex    i        i<5      data[maxIndex]<datas[i]
--------------------------------------------------------
   0             1         T                T
   1             2         T                F
                  3         T                T
   3             4         T                 F
                  5         F

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

		int[] datas =new int [5];
		datas[0]=2;
		datas[1]=3;
		datas[2]=1;
		datas[3]=5;
		datas[4]=4;
		
		System.out.print("[ ");
		for(int data:datas) {
			System.out.print(data+" ");
		}
		System.out.println("]");
		int maxIndex=0;
		//maxIndex max가 저장된 index 위치
		//0 권장 비교를 [1] index 부터 [4] index까지 
		//비교를  2번째 데이터부터 5번째 데이터까지
		//for문!
		for(int i=1;i<datas.length;i++ ) {
			if(datas[i]>datas[maxIndex]) {//내가 예상한 max보다 크다면
				//너가 max해	
				//max==datas[maxIndex]
				maxIndex=i;
			}
		}
		System.out.println("최대값은 "+datas[maxIndex]+"이고,");
		System.out.println("위치는 ["+maxIndex+"] 입니다.");
		
		

	}

}