본문 바로가기

Algorithm8

Insertion Sort (삽입 정렬) 삽입 정렬은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다. 원소의 개수가 적을 경우 유용하며, 구현이 간단하다. 예제 - [12 11 13 5 6]두 번째 원소 11을 이전 리스트와 비교하여 적절한 위치에 삽입 -> 11 12 13 5 6세 번째 원소 13을 이전 리스트와 비교하여 적절한 위치에 삽입 -> 11 12 13 5 6네 번째 원소 5를 이전 리스트와 비교하여 적절한 위치에 삽입 -> 5 11 12 13 6마지막 원소 6을 이전 리스트와 비교하여 적절한 위치에 삽입 -> 5 6 11 13 13 코드 - Swiftfunc insertionSort(var arr : Array) -> Array{var i.. 2016. 3. 4.
Bubble Sort (거품 정렬) 거품 정렬은 반복적으로 인접한 요소를 교환하며 동작하는 알고리즘이다. 아래는 ( 5 1 4 2 8 )에 거품정렬를 적용한 예제이다. (큰 수를 오른쪽으로 보내는 방식으로 오름차순으로 정렬한다. 왼쪽에서 오른쪽으로 진행) 1단계 ( 5 1 4 2 8 ) 5와 1을 비교한다. 5는 1보다 크므로 5와 1의 위치변경이 발생한다. -> ( 1 5 4 2 8 ) ( 1 5 4 2 8 ) 5와 4를 비교한다. 5는 4보다 크므로 5와 4의 위치변경이 발생한다. -> ( 1 4 5 2 8 ) ( 1 4 5 2 8 ) 5와 2를 비교한다. 5는 2보다 크므로 5와 2의 위치변경이 발생한다. -> ( 1 4 2 5 8 ) ( 1 4 2 5 8 ) 5와 8를 비교한다. 5는 8보다 작으므로 위치변경이 발생하지 않는다. -.. 2016. 2. 27.
Selection Sort (선택 정렬) 선택 정렬은 제자리 정렬 알고리즘의 하나로, 아래와 같이 실행된다. 1. 주어진 리스트 중 최소값을 찾는다.2. 최소값과 시작점의 값을 교체한다.3. 시작점을 제외한 나머지 리스트를 같은 방법으로 교체한다. 예를 들자면 arr[] = {64, 25, 12, 22, 11}의 값을 가지고 있는 배열의 선택정렬 실행순서는 아래와 같다. 1. 위 배열의 가장 작은 값은 11 이다. 11과 64(시작점)의 자리를 교체한다. - 11 25 12 22 642. 정렬된 11을 제외한 값 중 가장 작은 값은 12 이다. 25(시작점)와 12의 자리를 교체한다. - 11 12 25 22 643. 정렬된 11, 12를 제외한 값 중 가장 작은 값은 22 이다. 25(시작점)와 22의 자리를 교체한다. - 11 12 22 2.. 2016. 2. 22.
Binary Search (이진 탐색) 보통 특정 배열에서 원하는 값의 위치를 찾기위해서는 배열의 처음부터 끝까지 탐색을 해야한다. 예를들어 {1, 2, ,3 , 4, 5}의 값을 가지고 있는 배열에서 3의 위치를 찾고자 한다면1부터 비교를 시작해서 3까지 탐색을 해야 3의 위치가 확인이 가능하다. 대략 아래와 같은 알고리즘이 될 것이다. int search(int arr[], int n, int x){ int i; for (i=0; i= startPoint) { // 이진 탐색에 필요한 가운데 Point를 구한다. int mid = startPoint + (endPoint - startPoint)/2; // 가운데 숫자와 검색 숫자가 같다면 탐색이 성공하였으므로 값을 리턴한다. if (arr[mid] == searchNumber) { ret.. 2016. 2. 20.