써먹는 웹개발

[Java Study]5. 배열(+버블정렬) 본문

Study/Java & Python

[Java Study]5. 배열(+버블정렬)

kmhan 2018. 2. 11. 01:08


728x90
반응형

※ 해당 글은 제가 14년도에 학원 다닐때 직접 작성했던 자료입니다.


이중 for문 다음으로 이해하기 어려운 단원이 배열입니다. 


배열이란? 동일한 성격의 데이터를 관리하기 쉽도록 하나로 묶는 일



1차원 배열은 동일한 변수들의 모임입니다.

(※ 좀더 응용하면 클래스에 여러가지 데이터를 담아 클래스 배열로 만들 수 있습니다.)



예제 1) 1차원 배열에서 모음찾기

 - 1차원 배열에 연속적으로 형태(char)에 맞는 값을 집어넣고 조건에 맞으면 불러옵니다.




2차원 배열은 1차원 배열들의 묶음입니다.



예제 2) 2차원배열에서 모음찾기

 - 1차원 배열 5개를 묶어 2차원 배열을 만들었습니다.

 - 행과 열에 따라 값을 출력합니다.






배열은 이해를 못해도 소스를 따라하기엔 크게 어렵지 않았을 것입니다.


그런데 과제를 보고 소스를 작성할때 머뭇거리기 시작합니다.


과제 1) 버블정렬의 개수가 6개라면 (6-1)+(6-1)+(6-1)+(6-1)+(6-1) = 총 25번을 

          비교하지 않고, (6-1)+(6-2)+(6-3)+(6-4)+(6-5) = 15번만 비교하게 수정하시오.

― 배열도 이해를 못했는데 버블정렬?! (더군다나 수업도 놓쳤는데…. )


============================================================================================================

과제 1에서 먼저 알아야 할 것은 버블정렬의 개념입니다.
버블정렬이란? 일반적으로 사용되는 분류 알고리즘(sorting algorithm)이지만, 알고리즘이 수중(水中)의 「거품」과 움직임이 유사하기 때문에 이러한 이름이 붙여졌다. 이 말은 인접한 레코드의 키를 비교해서 그 결과 순서화되어 있지 않으면 교환하는 방식이다.(출처 : 네이버 사전)

버블정렬 예제)





다음은 유튜브에서 찾은 버블정렬 시뮬레이션입니다. (http://youtu.be/NiyEqLZmngY)

영상을 잘 보시면 한번 돌릴때마다 끝으로 간 값은 두번다시 비교하지 않습니다.

과제1의 목적은 (버블)정렬을 할때 쓸데없이 반복되는 명령을 수정하여 프로그램 성능을
                      향상 시키는데 있습니다. 


과제 1) 버블정렬 코드 수정
- 비교하여 마지막으로 간 수(비교 값들 중에서 가장 큰 수)는 더이상 비교하지 않습니다.



과제2 성적처리는 다음 글에 이어집니다.


728x90
반응형


Comments