Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 서버설정
- Kernighan의 C언어 프로그래밍
- iterator
- 페이징
- 선형대수
- 알파회계
- 목록처리
- 스프링부트핵심가이드
- GIT
- 네트워크 설정
- 자료구조와함께배우는알고리즘입문
- ㅒ
- resttemplate
- 리눅스
- 처음 만나는 AI수학 with Python
- network configuration
- d
- 코드로배우는스프링웹프로젝트
- 데비안
- 자료구조와 함께 배우는 알고리즘 입문
- 스프링 시큐리티
- 티스토리 쿠키 삭제
- 구멍가게코딩단
- 코드로배우는스프링부트웹프로젝트
- 자바편
- 친절한SQL튜닝
- baeldung
- 이터레이터
- /etc/network/interfaces
- 처음 만나는 AI 수학 with Python
Archives
- Today
- Total
bright jazz music
01-2 중앙값(median) 구하기 본문
//내가 짠 코드
class Median {
int median;
public int medianTest(int a, int b, int c) {
median = a;
if (median >= b) {
if (b >= c) {
median = b;
} else if (median >= c) {
median = c;
}
} else {
if (c >= b) {
median = b;
} else if (c > median) {
median = c;
}
}
return median;
}
}
public class TestMain{
public static void main(String [] args){
Median median = new Median();
System.out.println(median.medianTest(12,1445, 112));
}
}
------------------
//교과서
package org.example;
import java.util.Scanner;
public class Median {
static int med3(int a, int b, int c){
if (a >= b)
if (b >= c)
return b;
else if (a <= c)
return a;
else
return c;
else if (a > c)
return a;
else if (b > c)
return c;
else
return b;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("세 수의 중앙값 구하기");
System.out.println("a의 값");
int a = sc.nextInt();
System.out.println("b의 값");
int b = sc.nextInt();
System.out.println("c의 값");
int c = sc.nextInt();
System.out.println("세 수의 중앙값은 " + med3(a, b, c) + "입니다.");
}
// 세 수의 중앙값 구하기
// a의 값
//100
// b의 값
//200
// c의 값
//300
// 세 수의 중앙값은 200입니다.
}
중앙값 도출 과정은 퀵 정렬(quick sort)에서도 사용한다.
아래와 같이 작성하면 위의 코드에 비해 효율이 떨어진다.
static med3 (int a, int b, int c) {
if((b >= a && c <= a) || (b <= a && c >= a) ){
return a;
}else if((a > b && c < b) || (a < b && c > b)){
return b;
}
return c;
}
그 이유는 더이상 연산이 필요하지 않은 경우에도 추가 연산이 의무화 되기 때문이다.
예를 들어 (a >= c >= b) 인 경우, 처음의 코드에서 중위값을 구하려면 아래와 같이 대략 네 번의 연산이 실행된다.
1. if (a >= b) ==> yes
2. if(b >= c) ==> no
3. else if(a<=c) ==> no
4. return c;
두 번째 코드에선 (a >= c >= b) 인 경우, 중위값을 구하려면 아래의 모든 단계를 거쳐야 한다.
if
1. (b >= a) ==> no
2. (c <= a) ==> yes
3. && ==> no
4. (b <= a) ==> yes
5. (c >= a) ==> no
6. &&
else if
7. (a > b) ==> yes
8. (c < b ) ==> no
9. && ==> no
10. (a < b) ==> no
11. (c > b) ==> yes
12. && ==> no
13. return c;
'Algorithm&Data structure > Java text book' 카테고리의 다른 글
01-6 연습문제 (0) | 2022.12.02 |
---|---|
01-4 반복 (0) | 2022.12.01 |
01-3 순서도( flow chart) (0) | 2022.09.05 |
01-1 최댓값/최솟값 구하기 (0) | 2022.09.02 |
Comments