프로그래밍/Data Structure 2

[자료 구조] 알고리즘 평가 방법

1. 왜!! 우리는 알고리즘 성능 방법을 알아야 하는가??? - 세상에는 좋은 알고리즘이 많다. 그러나 상황에 맞게 쓰기위해서는 무조건 좋다고 최고가 아니다. 예를 들어보면, 세상에서 제일 빠른 알고리즘이 있다고 치자. 그런데 메모리를 1G가를 차지 않다. 그런데 우리는 초소형 장비(메모리10M)에 해당 알고리즘을 사용해야한다. 이때 1G가를 차지 하는 알고리즘을 좋다고 할수 있는것인가?? 절때 아닌것이다. 그래서 우리는 가장 최적의 알고리즘을 찾는 방법을 배워야한다. 2. 알고리즘 평가 항목 1) 속도 - 얼마나 빠른가?- 시간 복잡도(알고리즘 수행시간 분석 결과)로 평가 2) 메모리 - 얼마나 메모리를 필요로 하는가?- 공간복잡도(메모리 사용량에 대한 분석 결과)로 평가 * 최적의 알고리즘은 "빠른 ..

[자료 구조] 1. 필요성.

자료 구조의 필요성 필자는 우선 현재 6년차 C언어를 주력으로 하고있는 개발자이다.현 시점에서 대학교 때 배웠던 자료구조를 다시 공부하려고 한다. 1. 나는 왜 자료 구조를 다시 공부하려고 하는가?? 올해 초 회사에서 코딩을 하다 보니, 프로그램의 성능을 향상 시켜야 하는 일을 맏게 되었다. 그래서 성능을 향상 시킬 방법을 고민하기 시작했다. 그런데.. 맙소사.. 방법으 잘 모르겠더라...OTL, 정말 충격이 였다. 여태 껏 프로그래밍을 하면서 내가 생각하는건 다 구현 할수 있는 수준까지 되었으나. 정작 성능 향상시키는 것에서 막힌 것이다. 그래서 어떻게 게하면 프로그램의 성능을 향상 시킬수 있는지 찾아보았다. 여러 가지 방법이 있었다. 그중 대표적인 것으로 multi threading이 존재하고, 전역..