Algorithm/자료구조
-
벡터(Vectors) & 리스트(List) 자료구조Algorithm/자료구조 2022. 4. 15. 17:55
벡터 ADT - 객체의 순차적인 저장으로 배열의 개념을 확장함. - 삽입 / 삭제 연산으로 원소에 접근하기 위해선 Index가 반드시 필요함. - 벡터의 연산 at(int i) - 제거하지 않고 index i번째의 원소를 리턴함. set(int i , object o) - i번째의 원소를 o로 대체함. insert(int i, object o) - i번째의 원소에 o를 삽입함. erase(int i) - i번째의 원소를 삭제함. size() - 벡터의 크기를 반환함. empty() - 벡터가 비었는지 확인함. 배열에 기초한 실행 - N 크기의 배열 A를 사용함. - 변수 n은 벡터의 크기를 추적함.(저장된 원소에 따라 크기 변화 -> 벡터를 사용하는 가장 큰 이유이자 장점) - at 메소드의 시간복잡도는..
-
스택(Stacks) & 큐(Queue) 자료구조Algorithm/자료구조 2022. 4. 15. 17:18
추상 데이터 타입(Abstract Data Types, ADTs) - 추상 데이터 타입은 추상적인 데이터 구조임. - 추상 데이터 타입은 데이터를 저장하고 , 데이터를 연산하고 , 연산과 관련된 에러 조건을 구체화함. EX ) 간단한 주식 매매 시스템을 ADT Modeling 한다고 가정하자. 데이터 저장 : 매수 / 매도 명령 데이터가 저장된다. 데이터 연산 : 연산들은 구매(stock, shares, price) / 판매(stock, shares, price) / 취소(order) 등을 지원한다. 에러 조건 : 존재하지 않는 주식에 대한 매수 / 매도 명령 , 존재하지 않는 명령에 대한 취소 등이 있을 것이다. 스택(Stacks) ADT - Stack의 ADT는 임의의 객체들을 저장한다. - 삽입과 ..
-
알고리즘 분석 방법Algorithm/자료구조 2022. 4. 15. 16:38
실행 시간(Running Time) - 대부분의 알고리즘은 입력 객체를 출력 객체로 변환함. - 알고리즘의 실행 시간은 보통 입력 객체의 크기에 따라 증가함. - 평균 case time을 결정하는것이 어려운 편. - 그래서 실행시간의 최악의 경우(worst-case)에 집중함. ( 분석을 더 쉽게 하기 위해서 ) 실험 연구(Experimental Studies) - 알고리즘을 실행하는 프로그램을 작성하는 것. - 다양한 입력 크기와 구성으로 프로그램을 실행함. - clock()과 같은 메소드를 사용하여 실제 실행 시간을 정확하게 측정함. 실험 연구의 한계 - 어떤 것이 알고리즘을 실행하는데 반드시 필요한 것인지 알기 어려움. - 결과가 다른 입력들을 포함하지 않은 실행 시간을 나타내는지 알기 어려움. -..
-
연결 리스트 - 싱글 링크드 리스트(Linked List)Algorithm/자료구조 2022. 4. 14. 21:15
싱글 링크드 리스트(Single Linked-List) - 싱글 링크드 리스트는 노드의 순서로 구성된 구체적인 데이터 구조이다. - 각 노드는 data를 저장하는 element와 , 다음 노드의 주소를 연결하는 링크 필드로 구성되어 있다. 코드로 나타낸다면 다음과 같이 나타낼 수 있다. struct Node { int data; Node* next; }; Head(맨 앞 노드)에 Inserting(삽입) 방법 - 새 노드를 할당한다 -> 새 data를 삽입한다. -> 직전 Head에 새 주소를 가르킨다. -> 새 노드의 Head를 업데이트한다. Head(맨 앞 노드)에 Removing(제거) 방법 - Head 노드의 주소를 다음 주소로 변경한다. -> 가비지 컬렉터가 이전 노드를 회수하도록 허락한다. T..