목록전체 글 (42)
To Be myself
정렬내부 정렬모든 데이터를 주기억장치에 저장하고 정렬 비교 기반 정렬 - 두 데이터를 직접 비교하여 정렬, 키 값의 비교 횟수로 알고리즘 성능 나타냄ex. 선택 정렬, 버블 정렬, 삽입 정렬, 셀 정렬, 합병 정렬, 퀵 정렬, 힙 정렬vs데이터 분포 기반 정렬- 데이터의 분포 정보를 활용해 정렬, 데이터 이동 횟수로 알고리즘 성능 나타냄ex. 계수 정렬, 기수 정렬, 버킷 정렬 안정적 정렬동일한 값을 가진 데이터들이 정렬을 하고 나서도 상대적인 위치가 같게 유지되는 정렬 제자리 정렬입력 배열의 데이터 개수와 관계없이 일정한 상수개 외에 별도로 저장 공간이 필요하지 않은 정렬 선택 정렬 (Selection Sort)- 가장 작은 값부터 순서대로 선택해서 정렬 -> 정렬 안 된 부분에서 최솟값 찾고 ..
알고리즘알고리즘 분석정확성 분석: 유한한 시간내에 얼마나 정확한 결과를 내는지 수학적으로 증명 효율성 분석: 수행에 필요한 자원의 양을 측정 - 공간 복잡도: 메모리 양 (정적 + 동적)- 시간 복잡도: 수행 시간 (입력 크기의 함수와 최악의 수행시간) *(실용적) 모든 연산이 아닌 루프반복 횟수만 조사하고 최고 차수로 정함 점근 성능무한한 입력 크기에 따라 결정되는 성능실용적으로는 최고차수만으로 시간 복잡도를 표현 Big O (빅오) 점근적 상한, 최악의 수행시간 Big Ω (빅 오메가)점근적 하한, 최선의 수행시간 Big θ (빅 세타)점근적 상하한 O-표기 함수 간의 크기 관계상수 로그 선형 로그 선형 제곱 세제곱 지수O(1) 순환 알고..
알고리즘알고리즘을 왜 배우는가?알고리즘을 설계하고 분석하는 방법을 배우면, 컴퓨터로 문제를 해결하는 방법을 체계적으로 생각하면서 지적 추상화 및 통찰력이 향상될 수 있다.기본 개념문제를 풀기 위한 절차/방법의 명령어 들을 단계적으로 나열 정의한 개 이상의 출력을 만들기 위해 (입출력), 컴퓨터에서 수행 가능한 (유효성) 단순하고 명확한 (명확성) 명령들의 유한한 단계(유한성)를 거쳐 종료해야 한다. + (효율성) 설계욕심쟁이 방법 (Greedy Method, 탐욕 알고리즘)각 단계에서 가장 최선이라고 생각되는 국부적인 최적의 해를 선택해나가면서 전체의 최적해를 찾는 전략간단하면서 효율적인 알고리즘을 만들 수 있음최솟값/최댓값 구하는 최적화 문제 ► 거스름돈 문제동전의 개수를 최소화하면서 거스름돈을 돌려주..