반응형
안녕하세요 한주현 입니다.
목차 (계속하여 업데이트될 예정)
오늘 알아볼 알고리즘은 배열에서 최대값, 최소값 찾기 입니다.
알고리즘 생각
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 를 누르시면 됩니다
한주현 드림
반응형
'생물정보학 > 생물정보학 알고리즘' 카테고리의 다른 글
[생물정보학 알고리즘] 1 부터 n 까지 합 구하기 - 파이썬 알고리즘 공부, 자바 알고리즘 학습 (2) | 2018.11.13 |
---|
댓글