Roxy(171)
-
배열(Array)
배열(Array)의 개념배열은 여러개의 동일한 데이터 타입의 데이터를 한번에 만들 때 사용됩니다. 만일, 6개의 정수를 저장할 공간이 필요한 경우, 배열이 없다면int a1, a2, a3, a4, a5, a6;으로 선언해야하지만, 배열이 지원된다면 간단하게int a[6];으로 선언될 수 있습니다. 배열은 인덱스 번호를 기준으로 작업을 할 수 있기 때문에 효율적으로 루프를 설정하여 여러 상황에서 간단한 코드를 이용하여 결과를 나타낼 수 있습니다.- C언어에서는 배열의 인덱스는 0부터 시작- a[6] = a[0] ~ a[5] 까지 6개 2차원 배열2차원 배열은 1차원 배열이 여러개 모여서 이루어집니다.2차원 배열에서 가로줄은 행, 세로줄을 열이라고 합니다. int a[3][4]; a[0][0]a[0][1]a..
2016.11.09 -
연결리스트(Linked List)
연결리스트(Linked List)란?동적으로 크기가 변할 수 있고 삭제나 삽입시에 데이터를 이동할 필요가 없는 자료구조가 연결리스트입니다.- 데이터와 링크로 구성되어있고 링크가 데이터들을 연결하는 역할을 합니다. - 요런 형태입니다. 연결리스트는 노드로 구성되어있는데,- 노드 : 데이터 필드, 링크 필드로 구성- 데이터 필드 : 실제 저장할 데이터가 있는 공간- 링크 필드 : 다른 노드를 가리키는 포인터를 저장 배열의 경우 중간에 데이터를 삽입하려면 삽입하려는 위치에 있는 데이터와 그 이후에 있는 데이터들을 모두 한 칸씩 뒤로 움직여야하는데, 연결리스트는 그럴 필요가 없습니다.- 삽입하려는 위치의 링크만 변경해 주면 됩니다. 단순 연결 리스트- 위의 연결 리스트가 단순 연결 리스트- 데이터 필드와 링크 ..
2016.11.09 -
정렬 알고리즘 비교
정렬 알고리즘의 성능 비교 알고리즘 최선 평균 최악 삽입 정렬O(n) O(n^2) O(n^2) 선택 정렬 O(n^2) O(n^2) O(n^2) 버블 정렬 O(n^2) O(n^2) O(n^2) 쉘 정렬 O(n) O(n^1.5) O(n^1.5) 퀵 정렬 O(nlog 2n)O(nlog 2n) O(n^2) 힙 정렬 O(nlog 2n) O(nlog 2n) O(nlog 2n) 합병 정렬 O(nlog 2n) O(nlog 2n) O(nlog 2n) 기수 정렬 O(dn) O(dn) O(dn) - 최적의 정렬 방법은 정렬해야 할 데이터의 수, 크기, 타입에 따라 달라지므로 정렬 방법들의 장단점을 잘 이해하여 적합한 정렬을 사용할 수 있어야 합니다. 정렬 알고리즘별 실험 결과- 정수 60000개 정렬 알고리즘실행시간 (단위..
2016.11.09 -
기수정렬 (Radix Sort)
기수정렬 (Radix Sort)이때까지의 정렬 방법들은 모두 레코드들을 비교하여 정렬했습니다. 따라서 비교가 불가능한 레코드는 정렬할 수 없었습니다.기수정렬은 레코드를 비교하지 않고도 정렬하는 방법입니다.- 입력 데이터에 대해 어떠한 비교 연산도 실행하지 않고 데이터를 정렬할 수 있는 기법 기수란 숫자의 자리수입니다.- 예를 들면 숫자 42는 4와 2의 두개의 자리수를 가지고 이것이 기수가 됩니다.기수정렬은 이러한 자리수의 값에 따라 정렬을 하기 때문에 기수정렬이라는 이름을 얻었습니다. {8, 2, 3, 7, 5}를 정렬하기 위해 10진수라는 점을 착안하여 10개의 버킷을 만들고 입력 데이터를 각 자리수의 값에 따라 상자에 넣습니다.그리고 각 왼쪽 상자부터 순차적으로 버킷 안에 들어있는 숫자를 읽습니다...
2016.11.09 -
힙 정렬 (Heap Sort)
힙 정렬 (Heap Sort)최대/최소 힙을 이용한 정렬 방법으로 내림차순 정렬을 하려면 최대 힙을, 오름차순 정렬을 하려면 최소 힙을 이용한 정렬입니다.그렇다면 힙(Heap)은 무엇일까요? 힙의 개념힙(Heap)을 영어사전에서 찾아보면 "더미"라고 되어 있습니다.컴퓨터 분야에서의 힙은 완전이진트리 기반의 "더미"와 모습이 비슷한 자료구조를 말합니다.힙은 여러 개의 값들 중에서 가장 큰 값이나 가장 작은 값을 빠르게 찾아내도록 만들어진 자료구조 입니다.- 부모 노드의 키 값이 자식 노드의 키 값보다 항상 큰 이진트리를 말합니다.- Key(A) >= Key(B) - 힙은 중복된 값을 허용합니다. 최대 힙 : Key(부모노드) >= Key(자식노드)최소 힙 : Key(부모노드)
2016.11.09 -
퀵 정렬 (Quick Sort)
퀵 정렬 (Quick Sort)퀵 정렬, 말 그대로 빠른 정렬입니다. 평균적으로 매우 빠른 수행 속도를 자랑하는 정렬 방법으로 퀵 정렬도 합병 정렬처럼 분할-정복(Divide & Conquer) 방식을 사용합니다.하지만, 합병정렬과는 다르게 퀵 정렬은 리스트를 비균등하게 분할합니다. 1. 리스트 안에 한 요소를 피벗으로 선택한다. 대체로 첫 번째 요소를 피벗으로 선정합니다.2. 피벗보다 작은 요소들은 모두 피벗의 왼쪽으로, 큰 요소들은 오른쪽으로 옮깁니다.3. 피벗을 제외한 왼쪽과 오른쪽의 리스트들을 대상으로 1~2의 과정을 반복해 정렬을 완료합니다. 위 그림의 마지막 상태는 피벗 5를 기준으로 왼쪽 리스트는 피벗보다 작은 데이터, 오른쪽 리스트는 피벗보다 큰 데이터들로 구성되어 리스트가 분할된 것을 보..
2016.11.09