본문 바로가기
생물정보학/생물정보학 알고리즘

[생물정보학 알고리즘] 배열에서 최대값, 최소값 찾기 - 파이썬 알고리즘 공부, 자바 알고리즘 학습

by HanJoohyun 2018. 12. 29.
반응형

 


안녕하세요 한주현 입니다.

목차 (계속하여 업데이트될 예정)


오늘 알아볼 알고리즘은 배열에서 최대값, 최소값 찾기 입니다.


알고리즘 생각

1. 최대값, 최소값을 담을 수 있는 변수에 배열의 가장 첫 번째 항목을 넣음.

2-1. 최대값의 경우 
for 문으로 항목을 돌아가며 
최대값 변수에 담긴 수 보다 항목이 크면 최대값 변수에 새로운 항목을 집어 넣음

2-2 최소값의 경우
for 문으로 항목을 돌아가며
최소값 변수에 담긴 경우 보다 항목이 작으면 최소값 변수에 새로운 항목을 집어 넣음



파이썬 스크립트

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
number_list = [2,3,5,1,4]
 
max_num = number_list[0]
min_num = number_list[0]
 
for num in number_list:
    ## Find Max Number
    if max_num < num:
        max_num = num
 
    ## Find Min Number
    if min_num > num:
        min_num = num
 
print("Max Number: ", max_num)
print("min Number: ", min_num)


자바 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class MaxValueFinder {
    public static void main(String[] args) {
        ArrayList<Integer> number_list = new ArrayList<>(Arrays.asList(2,3,5,4,1));
 
        int max_num = number_list.get(0);
        int min_num = number_list.get(0);
 
        for(int num: number_list) {
            // Find Max Number
            if(max_num < num) {
                max_num = num;
            }
 
            // Find Min Number
            if(min_num > num) {
                min_num = num;
            }
        }
 
        System.out.println("Max Number: "+max_num);
        System.out.println("min Number: "+min_num);
    }
}
 




알고리즘 평가

첫 번째 항목 부터 마지막 항목(n) 까지 순차적으로 연산이 진행됩니다.

즉, 프로그램을 실행하게 되면 n회 만큼의 비교 연산을 수행합니다.

Big O notation으로 보았을 때 O(n) 입니다.




알고리즘 개선 - 내장함수 이용

알고리즘 생각

Max 나 min 값 같이 프로그램에서 자주사용하는 기능을 프로그래밍 언어에서 이미 만들어 둔 내장함수가 있습니다.

파이썬에서는 max(), min() 함수이며

자바에서는 Collections.max(), Collections.min() 메서드 입니다.

이를 이용하면 간단히 최대값, 최소값을 얻을 수 있습니다.



파이썬 스크립트

1
2
3
4
5
6
7
number_list = [2,3,5,1,4]
 
max_num = max(number_list)
min_num = min(number_list)
 
print("Max Number: ",max_num)
print("min Number: ",min_num)


자바 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Collections;
 
class MaxValueFinder2 {
    public static void main(String[] args) {
        ArrayList<Integer> number_list = new ArrayList<>(Arrays.asList(2,3,5,4,1));
 
        int max_num = Collections.max(number_list);
        int min_num = Collections.min(number_list);
 
        System.out.println("Max Number: "+max_num);
        System.out.println("min Number: "+min_num);
    }
}
 



오늘은 배열에서 최대값 최소값을 구하는 알고리즘에 대해서 알아보았습니다.

모든 소스 코드는 아래 github 페이지에서 만나실 수 있습니다. 


그럼 다음에 만나요~~ 





기부 버튼을 만들었습니다
단지 $1 의 작은 정성도 저에게는 큰 힘이 됩니다
기부해주신 분들을 기억하며
더 좋은 내용으로 보답해 드리겠습니다 :)

Donate 버튼은 paypal 결제로 paypal 계정이 없으시더라도
카드로도 기부 가능하십니다 :)
Use your credit card or bank account (where available). 옆의 continue 를 누르시면 됩니다

한주현 드림



 



반응형

댓글