일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- algorithm
- SWEA
- 코로나
- 헬스
- 월드프렌즈
- 칭기즈칸
- LG글로벌챌린저
- 교환학생
- 백준
- 테를지
- 몽골 헬스장
- 몽골 고기
- ICT봉사단
- 소프트웨어 아카데미
- 아부다비
- 몽골
- 울란바토르
- 초원
- 몽골요리
- 칭기스칸 동상
- 여행
- 게르
- Python
- 담슈타트
- 알고리즘
- 파이썬
- 독일
- 월드프렌즈 ICT 봉사단
- 한 줄로 서기
- 테를지국립공원
- Today
- Total
맛있는물회
[맛있는물회] <자바> 배열(array) - 2 본문
기말고사 내용 따라가려면 부지런히 해야겠다. 언제 객체 다하고 쓰레드로 넘어갈지.. ㅠㅠ
오늘은 배열 뒷부분을 다 봤다.
배열의 활용 부분에서 '총합과 평균', '최대값 최소값', 'shuffle', '임의의 값으로 배열 채우기' 등은 c에서 배운 부분과 매우 유사하기 때문에 모르는 부분만 정리하겠다.
01. java.lang 에 있는 Math class의 Math.random함수는 double값을 리턴하기 때문에 int에 저장할때 (int)이렇게 형변환을 해주어야한다.
-> int n = (int)(Math.random() *10);
==0~9중의 한 값을 임의로 얻는다.
02. System.out.print(numArr[i] = (int)(Math.random() * 10); 처럼 프린트문 안에서 초기화가 가능하다.
* 버블 정렬(bubble sort)라는 알고리즘이 나와 소개하겠다.
비효율적이지만 가장 간단한 sorting 알고리즘이다.
-> 예를 들어 다음과 같이 길이가 5일 int배열이 있을 때, 첫 번째와 두번째 요소의 값을 비교해, 왼쪽 요소의 값이
크면 두 값의 위치를 바꾸고, 그렇지 않으면 바꾸지않는다. 이러한 비교와 자리바꿈을 반복하는 알고리즘이다.
3 1 4 2 0 (왼쪽의 값이 크므로 두 값의 자리를 바꾼다)
1 3 4 2 0 (왼쪽의 값이 작으므로 두 값의 자리를 바꾸지 않는다.)
이러한 작업을 배열의 끝에 도달할 때 까지 반복하면 배열에서 제일 큰 값이 배열의 마지막 값이 된다.
-> 1 3 2 0 4
비교횟수는 모두 4번이며, 이 값은 배열의 길이보다 1이 작은 값(numArr.length - 1)이다.
최대값이 젤 오른쪽으로 가게되면 나머지를 다시 sorting할 때 최대값을 비교할 필요 없이 1이 작은 값 만큼 비교를 하면 된다.
따라서 매 반복마다 비교 횟수가 1씩 줄어들기 때문에 바깥족 for문의 제어변수 i 를 빼주는 것이다.
void BubbleSorting() {
for(int i =0; i<numArr.length -1;i++) {
boolean changed = false;
for(int j=0;j<numArr.length-1-i;j++)
if(numArr[j] > numArr[j+1]) {
int temp = numArr[j];
numArr[j] = numArr[j+1];
numArr[j+1] = temp;
changed = true;
}
}
if (!changed) break
}
(출처 - 자바의 정석)
'IT > 자바' 카테고리의 다른 글
[맛있는물회] <자바> String.substring() 메소드 사용법 (0) | 2018.07.09 |
---|---|
[맛있는물회] <자바> new Scanner(Paths.get("clients.txt")를 사용해서 입력받기 (0) | 2018.07.04 |
[맛있는물회] <자바> 배열(Array)_(String)-3 (0) | 2018.07.04 |
[맛있는물회] <JAVA>배열(Array) (0) | 2018.07.04 |