본문 바로가기

탐색2

[자료구조 알고리즘] 자료구조 효율적인 탐색을 위한 정렬알고리즘#2 [구현한 코드]- https://github.com/imjinbro/datastructure/tree/master/src/main/java/com/jinbro/source/sorting- 이제 배운 정렬 알고리즘으로 여러 데이터를 정렬해봐야지 [병합정렬]1) 큰 문제를 더이상 쪼갤 수 없을 떄까지 쪼개서 해결(정렬)하면서 결합- 결합하면서 정렬 : 1개까지 쪼개버려서 정렬하면서 붙임(완전 단순화)- 실제로 쪼개는게 아니라 접근 제한(1) 쪼갤 수 있을 떄까지 쪼개고(2) 최소한의 상태로 쪼개진 2개를 가지고 정렬 - 병합 2) 성능 : NlgN (데이터 N개 일 때 최악의 경우 얼마나!)- 연산 : 분할(나눠) + 병합(비교 정렬 후 합치기) - 둘 중에 병합 평가만 일단(1)병합 단계가 데이터 개수에 .. 2017. 11. 17.
[자료구조 알고리즘] 자료구조 효율적인 탐색을 위한 정렬알고리즘#1 [정렬]- 자료구조 연산 : 삽입 - 삭제 - 탐색(정렬되어있는 상태로)- 탐색을 위한 정렬 : 탐색을 효율적으로 하기위해서 [버블정렬]1) 구현하기는 쉽지만 데이터 개수가 늘어남에 따라 연산 횟수도 늘어남2) N개의 데이터에서 순서대로 2개씩 잡고 오름/내림차순(비교와 이동 연산)에 따라 정렬함3) 공간복잡도 O(N) : 같은 배열에서 진행하기때문에4) 시간복잡도 - 워스트 케이스- 비교했을 때 모두 이동함- 어쨌든 비교를 데이터 개수만큼 해야하고 비교를 어떻게 하나 : (n-1)번 + (n-2)번 + ...... + 1- 등차수열의 합 : n(n-1)/2 -> O(N^2) static void sort(int[] arr){ int length = arr.length; for(int i=0; i 2017. 11. 11.