알고리즘 16

[알고리즘] 병합 정렬 (Merge Sort)

[알고리즘] 병합 정렬 (Merge Sort) 병합정렬은 퀵정렬과 마찬가지로 분할 정복 방법의 알고리즘이며 퀵정렬과 마찬가지로 O(N * logN)의 시간 복잡도를 가진다. 먼저 반을 나누고 나중에 합쳐서 정렬을 하자!!!! 다음 숫자들을 오름차순으로 정렬하는 프로그램을 작성하자! 7, 10, 5, 8, 1, 6, 3, 4, 2, 9 7 10 5 8 1 | 6 3 4 2 9 //반 나누기 7 10 5 | 8 1 | 6 3 4 | 2 9 //나눈 것을 또 나누기 5 7 10 | 1 8 | 3 4 6 | 2 9 //나눠진 것들 정렬 1 5 7 8 10 | 2 3 4 6 9 //합쳐서 정렬 1 2 3 4 5 6 7 8 9 10 소스코드 구현 (C++) #include //정렬될 배열을 미리 전역변수로 선언해두..

[알고리즘] 퀵 정렬 (Quick Sort)

[알고리즘] 퀵 정렬 (Quick Sort) 특정한 값(Pivot)을 기준으로 큰 숫자와 작은 숫자를 나누자!!! 다음 숫자들을 오름차순으로 정렬하는 프로그램을 작성하자! 1, 10, 5, 8, 7, 6, 3, 4, 2, 9 1 10 5 8 7 6 3 4 2 9 // 맨 앞을 기준으로 왼쪽에서부터 큰값을 찾고 오른쪽에서부터 작은 값을 찾는다. // 큰값 10, 작은값 없음 다음으로 피벗을 넘김 1 10 5 8 7 6 3 4 2 9 //기준 값 10, 큰값 없음 작은값 5 1 5 10 8 7 6 3 4 2 9 ⁞ 1 5 8 7 6 3 4 2 9 10 //10보다 큰 값이 없기 때문에 계속 작은 값과 위치가 바뀌어서 맨뒤로감 1 5 8 7 6 3 4 2 9 10 //기준 값 5, 큰값 8 작은값 2 1 5 ..

[알고리즘] 삽입 정렬 (Insertion Sort)

[알고리즘] 삽입 정렬 (Insertion Sort) 다음 숫자들을 오름차순으로 정렬하는 프로그램을 작성하자! 1, 10, 5, 8, 7, 6, 3, 4, 2, 9 정렬 시 각 숫자를 필요할 때만 적절한 위치로 바꾸자!!! 1 10 5 8 7 6 3 4 2 9 _ 1 _ 10 5 8 7 6 3 4 2 9 1 _ 10 _ 5 8 7 6 3 4 2 9 1 5 _ 10 _ 8 7 6 3 4 2 9 1 5 8 10 7 6 3 4 2 9 ⁞ 1 2 3 4 5 6 7 8 9 소스코드 구현 (C++) int main() { int temp; int arr[10] = { 1, 10, 5, 8, 7, 6, 3, 4, 2, 9 }; //삽입 정렬 for (int i = 0; i < 9; i++) { int j = i; w..

[알고리즘] 버블 정렬 (Bubble Sort)

[알고리즘] 버블 정렬 (Bubble Sort) 다음 숫자들을 오름차순으로 정렬하는 프로그램을 작성하자! 1, 10, 5, 8, 7, 6, 3, 4, 2, 9 옆에 있는 값과 비교해서 더 작은 값을 앞으로 보내자!!! //1 1 10 5 8 7 6 3 4 2 9 1 5 10 8 7 6 3 4 2 9 1 5 8 10 7 6 3 4 2 9 1 5 8 7 10 6 3 4 2 9 ⁞ 1 5 8 7 6 3 4 2 9 10 //2 1 5 8 7 6 3 4 2 9 10 1 5 7 8 6 3 4 2 9 10 1 5 7 6 8 3 4 2 9 10 ⁞ 1 5 7 6 3 4 2 8 9 10 ⁞ 1 2 3 4 5 6 7 8 9 10 소스코드 구현 (C++) int main() { int temp; int arr[10] = {..

[알고리즘] 선택 정렬 (Selection Sort)

[알고리즘] 선택 정렬 (Selection Sort) 다음 숫자들을 오름차순으로 정렬하는 프로그램을 작성하자! 1, 10, 5, 8, 7, 6, 3, 4, 2, 9 가장 작은것을 앞으로 보내자!!! 1 10 5 8 7 6 3 4 2 9 1 2 5 8 7 6 3 4 10 9 1 2 3 8 7 6 5 4 10 9 1 2 3 4 7 6 5 8 10 9 ⁞ 1 2 3 4 5 6 7 8 10 9 1 2 3 4 5 6 7 8 9 10 소스코드 구현 (C++) #include using namespace std; int main() { int min, index, temp; int arr[10] = { 1, 10, 5, 8, 7, 6, 3, 4, 2, 9 }; //선택정렬 for (int i = 0; i < 10; ..

[C++] STL

[C++] STL STL (Standard Template Library) 여러가지 다른 구조를 보관하기 위한 컨테이너와 컨테이너 내의 요소를 접근하기 위한 반복자, 그리고 컨테이너에 특정한 작업을 위한 알고리즘 클래스로 구성되어 있다. 컨테이너 순차 컨테이너와 연관 컨테이너로 구성되어 있으며, 여러가지 구조 데이터를 보관하는 객체이다. - 순차 컨테이너 : 요소들을 보관된 순서를 유지할 수 있게 해주며, 어떤 위치든 삽입, 제거가 가능하지만 성능에 있어서는 다른 특성을 가진다. / 벡터, 데큐, 리스트 등 - 연관 컨테이너 : 정렬 연관 컨테이너와 해쉬 연관 컨테이너 두 분류로 존재한다. 특정 요소에 대한 빠른 검색을 제공하며 사용자가 지정한 순서가 아닌 자신의 규칙에 따른 순서로 보관한다. / 세트,..