일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- the midnight library
- 프로그래머스
- swexpertacademy
- 코테 준비
- readingbook
- 백준
- 완전탐색
- sw expert academy
- SQL
- nightroutine
- English
- 코테 대비
- 코테
- 원서
- 직무면접
- 알고리즘
- englishbook
- MySQL
- 알고리즘 문제
- 쉬운 알고리즘 문제
- dfs
- sw expert
- 원서읽기
- PyQt
- STUDYENGLISH
- D4
- 코딩테스트
- 삼성
- 원서읽자
- BFS
- Today
- Total
목록정렬 (3)
시나브로
Sorting Algorithm Comparisons Sorting Algorithm : 비교방식 알고리즘 1. Bubble sort : O(n^2) 2. selection sort : O(n^2) 3. Insertion sort : O(n^2) 4. Merge sort : O(n log n) , divide / conquer 5. Heap sort : O(n log n) [정렬], O(log n) [삽입, 삭제], (1) 힙에 넣었다가 꺼내는 원리로 sorting (2) 기존의 배열을 heapify(heap으로 만들어주는 과정)을 거쳐 꺼내는 원리로 정렬하는 방법 6. Quick sort : O(n log n), divide / conquer worst case : O(n^2) Balanced Part..
정렬을 이용하여 단어를 정렬하는 문제였다. 정렬을 이용하는 가장 쉬운 문제였지만, 이 문제의 경우 퀵정렬을 사용할 경우 시간초과가 뜬다. 이에 유의해서 merge sort를 사용하였다. 시간은 딱맞았다. 하지만, merge sort의 경우, 배열을 2배를 사용했기에 공간효율이 좋지 못한 것 같다. -런타임에러 : 배열의 크기를 선언할 때, 0을 하나 누락했었다. - 시간초과 : 알고리즘을 수정하였다. quick -> merge sort로 #include #include using namespace std; string list[20001]; void swap(int i, int j) { string temp = list[i]; list[i] = list[j]; list[j] = temp; } int ch..
퀵 정렬은 평균적으로 O(nlogn)의 시간복잡도를 가지고 있다. 퀵 정렬은 기준의 되는 피봇을 설정하고 그것을 기준으로 값들을 swap하면서 sort 하는 것이다. #include #include using namespace std; int list[20] = { 0 }; void swap(int i, int j) { int temp = list[i]; list[i] = list[j]; list[j] = temp; } void quick_sort(int left, int right) { if (left > right)return; int pivot = right; int i = left; int j = right; while (i < j) { while (list[i] < list[pivot]) i++..