본문 바로가기

Computer195

Sorting에 대한 짧은 정리(N(logN)^2, Shell정렬) 4. Shell Sortting Insertion Sorting은 N이 작을 경우와, 반정렬,정렬된상태(최선의 경우 O(N)) 소요 시간이 매우 짧다. 이를 이용한 Sorting으로 Divide and Conquor방법의 대표적인 예라고 할수 있다. 자료를 일정 부분(h)로 나누어서 각각에 대해서 insertion sorting을 하고 sorting된 전체 자료를 다시 h-1로 나누어서 각각에 대해서 insertion sorting하고 이 마지막으로 전체를 insertion sorting하는 방법이다. 예를 들어 8, 2, 9, 3, 4, 5, 7, 1 을 정렬한다면 h=3으로 하여 8,3,7 에 대해서 insertion sorting 2,4,1에 대해서 insertion sorting 9,5에 대해서 .. 2007. 4. 5.
Sorting에 대한 짧은 정리(나쁜 정렬) 정렬은 내부정렬과 외부 정렬이 있는데, 내부 정렬은 대상 자료를 모두 기억 장소에 읽어들여 정렬하는 것으로 Bubble,Selection,Insertion,Shell,Quick,Radix,Heap,Merge등이 있고 외부 정렬은 자료의 일부분만 기억장소에 읽어 들여 정렬하는 방법으로, 벨런스트, 캐스캐이드, 다상, 오실레이팅병합 정렬이 있다. 내부 정렬 1. Bubble Sorting 두개의 자료를 비교하여 자료를 맞바꾸는 방식으로 정렬 31, 15, 44, 13, 22가 있을 경우 31과 15를 비교하여 15,31,44,13,22로 2007. 4. 5.
Big-O notation 개요 컴퓨터 프로그램은 Data structure + Algorithm이다. 알고리즘은 Input을 받아서 Output을 내는 잘 정의된 Computational Procedure라고 할수 있다. 알고리즘에서 자주 보이는 표기는 빅O 표기이다. (big-O notation) 이는 어떤 함수의 복잡도를 정의하는데 일반적으로 사용하는 기호로 자료 집합의 크기가 성장함에 따라 알고리즘의 효율이 어떻게 변화하는지를 대략적으로 추정하는 함수라고 볼수 있다. 가장 좋은 알고리즘은 O(c)로 자료집합의 크기에 상관 없이 수행에 걸리는 시간이 동일한 경우이다. 다음으로 자료의 크기에 의존적인 알고리즘 중에서 가장 효율적인 것은 O(log_2 n) 으로 기수가 2인 로그 함수이다. 자료의 크기가 커질 수록 더욱더 효율적인 경.. 2007. 4. 5.