본문 바로가기

자료구조

(11)
SORT종류 1 1.버블정렬(Bubble Sort) =>인접한 두개의 데이터를 비교해가면서 정렬을 진행하는 방식 *성능 평가 :비교의 횟수, 이동의 횟수 :정렬기준이 역순으로 저장된 상태라면 비교 횟수와 이동횟수가 일치하기 때문에 최악의 경우 : O(n2) ex) 3 2 4 1 오름차순으로 정렬해보자 [버블정렬 1/3] 1) 3 2 4 1 ->2 3 4 1 (1번과 2번 비교) 2) 2 3 4 1 ->2 3 4 1 (2번과 3번 비교) 3) 2 3 4 1-> 2 3 1 4 (3번과 4번 비교) [버블정렬 2/3] :위의 과정을 다시 반복 1)2 3 1 4 -> 2 3 1 4(1번과 2번 비교) 2)2 3 1 4 -> 2 1 3 4(2번과 3번 비교) 3)2 1 3 4 -> 2 1 3 4(3번과 4번 비교) [버블정렬 3..
동적계획법(Dynamic Programming) *동적 계획법이란? 복잡한 문제를 간단한 문제로 나눠푸는 방법으로, 문제를 여러 하위 문제로 나눠 푼다음, 그결과를 이용하여 결합해 문제를 해결하는 것 +조금 장난스럽게 말해서 답을 재활용하는 거다. 앞에서 구했던 답을 뒤에서도 이용하고, 옆에서도 이용하고...엄밀히 말해 동적 계획법은 구체적인 알고리즘이라기보다는 문제해결 패러다임에 가깝다. + 주어진 문제를 부분 문제로 나누어 각 부분 문제의 답을 계산하고, 이 계산한 결과값을 이용해 원래 문제의 답을 산출하기 때문이다 *예제를 이용해 알아보자
재귀함수 1.재귀함수란? -자기자신을 호출하는것,완료되지 않는 함수를 호출하는 것 2.재귀함수의 흐름 하지만 ,이렇게 호출을 계속해서 복사본을 만들다보면, 무한 루프 상태에 걸리기때문에 함수안에 기저조건(=탈출조건)을 올바르게 구현하여 특정한시점에 함수를 반환시켜 종료시키면된다. 3.재귀함수를 쓰는 이유 주로, 복잡한 식을 간단하게 구현하기 위해 재귀함수를 씁니다. 활용> [피보나치 수열] : 호출순서를 추적하기는 힘드나, 호출 관계를 파악함으로써 간단하게 구현을 구현할수 있다. 0,1, 1,2,3,5,8,13,21 .... 수열의 n번째 값 = 수열의 n-1번째 값+ 수열의 n-2번째 값 fib(n) { 0-------n=1 1-------n=2 2-------n이 1 또는 2가 아니라면 } //수열의 관계를 ..