Java (국비)86 선택 정렬 Exam 02 선택 정렬 예제문을 풀어 보았다. 짚고 넘어가야할 부분 1. Random random = new Random(); 을 사용할 때 범위가 0에서 시작 하는 것. 2023. 5. 6. 선택 정렬 Exam 01 선택 정렬 예제문을 풀어 보았다. 짚고 넘어가야할 부분 1. 왜 첫번째 루프문의 조건식의 범위가 arr.length - 1; 인지 // 끝에 비교할 대상이 없다. 2. 왜 안쪽 루프문의 초기식 j는 (i + 1); 인지 // 기준으로 잡은 애를 제외하고 그 다음 값 부터 비교 해야 하기 때문에. 3. 교환 알고리즘 사용. 2023. 5. 6. 선택 정렬 (Selection Sort) 선택 정렬은 현재 위치에 들어갈 값을 찾아서 선택하는 알고리즘 이다. 값을 비교 하면서 찾기 때문에 비교 정렬 이라고도 할 수 있다. 데이터 (값)를 서로 교환 (스왑)하는 과정에서 임시 변수 (tmp) 공간을 필요로 한다. 이 말들이 추상적이기에 아래에 추가 설명이 필요 할듯 하다. 선택 정렬의 전체적인 흐름은 아래와 같다. 루프 첫번째 때 0번째 배열 의 값을 기준으로 잡는다. 1. 배열에서 최소값을 찾는다. 2. 최소값을 0번째 배열에 위치하는 값과 교환한다. // 교환 알고리즘 사용. 3. 다음 루프 부터는 기준이 되었던 앞 자리를 제외한 나머지 값들 중 최소값을 찾아 과정을 반복 한다. 글이라서 개념이 안잡힐 수 있기 때문에 그림을 보자. 마지막 8번째 루프는 돌지 않는 이유가 뒤에 더 이상 비.. 2023. 5. 6. 최대값, 최소값 알고리즘 자바 배열 파트를 공부하다가 최대값, 최소값을 구해야 하는 상황이 생겼다. 먼저, 위와 같은 배열이 있다고 해보자. 위와 같이 최대값을 의미하는 변수 max를 arr[0] 으로 잡아 주는 것이다. arr[0]은 1이고, 1을 기준으로 잡아서 루프를 돌은다. for문 안에 초기식이 i = 1; 인 이유는 arr[0]은 비교할 필요가 없기 때문이다. arr[1] 부터 비교를 해야하기 때문에 초기식은 위와 같게 된다. 반복 1회차를 보자. 만약 arr[0]이 arr[1] 보다 작아 ? true. 그러면, arr[1]의 값을 max에 저장해. 반복 2회차. 만약 arr[1]이 arr[2] 보다 작아 ? true. 그러면, arr[2]의 값을 max에 저장해. 반복 3회차. 만약 arr[2]가 arr[3] 보다 .. 2023. 5. 6. 두 변수의 값 바꾸기 두 변수 x와 y에 저장된 값을 바꾸려면 어떻게 해야 할까 ? int x = 96; int y = 28; x = y; y = x; 로 하면 값이 바뀔까? x = 28; y = 28; 이 되므로, 기존에 x의 값이였던 96은 사라져 버린다. 그래서 이 96을 저장할 임시 공간을 만들어야 한다. int tmp; // 임시로 값을 저장하기 위한 변수 tmp = x; // 1) x의 값을 tmp 공간에 저장 x = y; // 2) y의 값 28을 x 공간에 저장 y = tmp; // 3) x의 값을 저장했던 tmp 공간의 값을 y에 저장 이렇게 식으로 표현해서 이해가 가지 않으면 그림으로 그려 보자. 96을 tmp에 넣고, y 값 28은 x에 넣고, 96을 저장해놓은 tmp의 값을 y로 옮긴다. 글을 올리면서,.. 2023. 5. 6. 이전 1 ··· 7 8 9 10 다음