목록언어/자료구조 & 알고리즘 (4)
No Rules Rules
자료구조란? 자료구조(資料構造, data structure)는 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다. 더 정확히 말해, 자료 구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다. 자료구조는 크게 선형구조 와 비선형구조, 단순구조 와 파일구조 로 나눌 수 있습니다. 여기서 단순구조와 파일구조는 생략하고 선형구조와 비선형구조 에 대해서 알아보겠습니다. 선형구조란? 선형구조란 자료를 구성하는 원소들은 순차적으로 나열시킨 형태를 의미한다. 방향에 따라 스택, 큐, 덱 등으로 나뉩니다. 비선형구조란? 하나의 자료 뒤에 여러개의 자료가 존재할 수 있는 형태를 의미한다. 트리의 구조가 대표적이라고 할 수 있습니다.
거품 정렬 또는 버블 정렬( - 整列, 영어: bubble sort, sinking sort)은 두 인접한 원소를 검사하여 정렬하는 방법이다. 시간 복잡도가 O(n^2) 로 상당히 느리지만, 코드가 단순하기 때문에 자주 사용된다. 버블정렬은 두개의 값을 서로 비교하는 방식입니다. 단순하고 직관적이므로 실제로 구현에서 나도 모르게 사용하는 정렬입니다. 배열 4개가 있다고 가정해봅시다. 아래는 오름차순을 기준으로 기재하였습니다. 배열[0]과 배열[1]을 비교하여 작은 값은 앞에, 큰값은 뒤에 배치합니다. 배열[1]과 배열[2]를 비교하여 작은 값은 앞에, 큰값은 뒤에 배치합니다. 배열[2]과 배열[3]를 비교하여 작은 값은 앞에, 큰값은 뒤에 배치합니다. 따라서 배열[3]은 배열 4개 중 가장 큰 값입니다...
삽입 정렬(揷入整列, insertion sort)은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다. 삽입정렬은 현재의 인덱스값이 어느 인덱스에 삽입되어야 할지를 비교하며 이루어집니다. 선택정렬의 경우, 하나의 값을 기준으로 그보다 더 작은 (더 가장 작은) 인덱스를 찾고 두 인덱스의 값을 서로 swap 하는 방식입니다. 하지만 삽입정렬의 경우, 하나의 값을 기준으로 그보다 더 큰값이 존재한다면 큰값이 있는 인덱스를 뒤로 한칸씩 밀어나간다는 개념입니다. 즉, 선택정렬은 swap의 개념이지만 삽입정렬은 insert에 개념으로 접근됩니다. (배열은 insert라는 개념이 없으므로 한 칸씩 뒤로 미는 형태로 구현됩니다..
선택 정렬(選擇整列, selection sort)은 제자리 정렬 알고리즘의 하나로, 다음과 같은 순서로 이루어진다. 주어진 리스트 중에 최소값을 찾는다. 그 값을 맨 앞에 위치한 값과 교체한다(패스(pass)). 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다. 선택정렬은 가장 직관적인 정렬 방법입니다. 배열 10개가 있다고 가정해봅시다. 아래는 오름차순을 기준으로 기재하였습니다. 배열[0]을 기준으로 배열[1] ~ 배열[9] 중 최소값이 있는 인덱스를 찾습니다. 그리고 해당 인덱스의 값과 배열[0]의 값을 서로 swap 합니다. (찾은 인덱스가 없다면 배열[0]과 배열[0]을 서로 swap 할 수도 있고 swap 자체를 하지 않아도 됩니다.) 다음으로 배열[1]을 기준으로 배열[2] ~ 배열..