Basic/Data Structure(23)
-
삽입정렬 (Insertion Sort)
삽입정렬 (Insertion Sort) 삽입정렬은 손안의 카드를 정렬하는 방법과 유사합니다.즉, 새로운 카드를 기존의 정렬된 카드 사이의 올바른 자리를 찾아 삽입함으로써 정렬이 유지되게 합니다.- 새로 삽입될 카드의 수 만큼 반복하면 전체 카드가 정렬 1. 리스트의 처음부터 값을 비교하며 정렬된 부분의 어느 위치에 삽입되어야 하는가를 판단2. 해당 위치에 이 숫자를 삽입하게 되면 정렬된 부분의 크기는 하나씩 커지며 자리이동3. 정렬되지 않은 부분은 크기가 하나 줄어듦의 순서를 반복합니다. 삽입정렬의 특징삽입정렬은 안정성이 있으며, 비효율적입니다. 처리속도는 선택정렬과 마찬가지로 O(n^2)입니다. 삽입정렬 코드 출처 : http://wonjayk.tistory.com/218
2016.11.09 -
선택정렬 (Selection Sort)
선택정렬 (Selection Sort) 선택정렬은 가장 이해하기 쉬운 정렬 방법입니다.리스트 중 가장 작은 숫자를 선택하여 왼쪽 부터 정렬시켜 나가는 작업을 반복하는 정렬입니다. 아래는 선택정렬의 순서입니다. 선택정렬의 특징 선택정렬은 안정성이 없고 비효율적이지만 구조가 단순하여 구현이 간단하다는 장점이 있습니다.레코드 갯수의 -1번 반복하여 정렬을 완료합니다.처리속도 O(n^2)- 안정성 : 입력 데이터에 동일한 키 값을 갖는 레코드가 여러개 존재할 경우 이들의 상대적인 위치가 정렬 후에도 그대로 바뀌지 않는 것을 안정성 있는 정렬 이라고 합니다. 선택정렬 구현 출처 : http://wonjayk.tistory.com/217
2016.11.09 -
트리 (Tree)
트리 (Tree) 지금까지는 리스트, 스택, 큐 등의 선형 자료 구조(Linear Data Structure)만을 공부했습니다. - 선형 자료 구조는 자료들이 직선과 같이 나열되어 있는 구조를 의미합니다. 만약 선형이 아니고 자료가 계층적인 구조를 가지고 있다면 어떻게 해야할까요? - 조상과 자손, 전체와 부분, 상사와 부하직원, 컴퓨터의 디렉토리 구조 등의 계층적 관계입니다. - 이런 계층적인 관계를 표현하기에는 선형 자료 구조로는 한계가 있습니다.트리는 이러한 계층적인 구조를 표현하는데 사용하는 자료구조입니다. - 인공지능 문제에서도 트리가 사용됩니다. 의사결정트리 등 트리의 용어들을 알아보겠습니다.노드 : 트리의 구성요소들루트노드 : 부모가 없는 노드, 트리는 하나의 루트노드만 가집니다.리프노드 :..
2016.11.09 -
정렬1
1.Bubble Sort 거품 정렬은 가장 쉬운 정렬이지만 속도가 느리다는 단점이 있습니다. 그래서 비교적 적은 크기의 데이터에 대해서 사용을 하는 경우가 많습니다. 다음과 같은 특징을 가지고 있습니다. 최고 속도 - O(n) 평균 속도 - O(n^2) 최악 속도 - O(n^2) 메모리 사용 - 1 안정성 - 안정 특징 - 작은 코드 크기 (가장 단순 할 듯) 알고리즘 의사코드 (Pseudocode) procedure bubbleSort( A : list of sortable items ) repeat swapped = false for i = 1 to length(A) - 1 inclusive do: if A[i+1] > A[i] then swap( A[i+1], A[i] ) swapped = true..
2014.11.10 -
정렬
1.Bubble Sort 거품 정렬(Bubble sort)은 두 인접한 원소를 검사하여 정렬하는 방법이다. 시간 복합도가 O(n2) 로 상당히 느리지만, 코드가 단순하기 때문에 자주 사용된다. 원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 지어진 이름이다. int temp[9] = {3, 2, 1, 5, 4, 7, 8, 0, 6}; int tempCount = 9; int hold; for (int loop=1; loop 0 ) { remember = data[(j=i)]; while ( ++j data[j] ); if ( --j == i ) continue; memcpy ( data+i, data+i+1, sizeof(*data) * (j-i) ); data[j] = remember..
2014.11.10