목록#알고리즘 (4)
DNF LOVE
정렬 알고리즘의 세 번째 이야기, 퀵 정렬(Quick Sort) 3. 정렬 알고리즘(Sorting Algorithm)의 모든 것 ③ - 퀵 정렬(Quick Sort) : 퀵 정렬은 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬에 속한다. 퀵 정렬은 분할 정복 방법을 통해 리스트를 정한다.1. 리스트 가운데서 하나의 원소를 고른다. 이렇게 고른 원소를 '피벗'이라고 한다.2. 피벗 앞에는 피벗보다 값이 작은 모든 원소들이 오고, 피벗 뒤에는 피벗보다 값이 큰 모든 원소들이 오도록 피벗을 기준으로 리스트를 둘로 나눈다. 이렇게 리스트를 둘로 나누는 것을 분할이라고 한다. 분할을 마친 뒤에 피벗은 더 이상 움직이지 않는다.3. 분할된 두 개의 작은 리스트에 대해 재귀(Recursion)적으로 이 과정을 ..
시작~은 달콤하게 평범하게~ 정렬문제로! 그것도 정렬문제 중에서도 쉬운 편인 1026번 보물을 풀어보았다. 간단하게 풀었고 간단하게 맞췄다. >(VS 2011로 실행해서 그런지 좀 깨진다. VS2011라니 유물인가ㅠ) 보물 문제는 재배열 -> 정렬 문제였다.참고로 나는 자바와 C#만 하고 살았기 때문에 C++의 문법을 배열 사용 + 포인터 기초 밖에 모른다. 그런데도 풀 수 있었던 매우 쉬운 문제였다. 정수 배열의 길이 num을 입력 받고, 그런 다음 배열 a와 b에 각각 num만큼의 크기를 할당해 주고 또 그 크기만큼 각 인덱스에 값을 입력 받는다. S = A[0]*B[0] + .... + A[n-1]*B[n-1}의 값이 가장 작은 최소값으로 만들려면, 한 쪽은 오름차순, 다른 한 쪽은 내림차순으로 정..
정렬 알고리즘은 알고리즘 중에서도 가장 기초적인 개념이다. 정렬 알고리즘에는 다양한 것이 있는데 대표적으론 버블, 선택, 퀵, 힙, 병합정렬이 있다. 1. 정렬 알고리즘(Sorting Algorithm)의 모든 것 ① - 버블정렬 : 버블정렬은 정렬 알고리즘 중에 가장 이해하기 쉬운 개념이지만 시간복잡도가 O(n^2)이기도 하고 실전에서 좋은 성능을 내지 못하기 때문에 잘 사용되지 않는다. 그러나 학부생이라면 과제할 때 정렬이 필요하다면 외워놓고 바로바로 쓸 수 있는 쉬운 정렬이기 때문에 한 번쯤은 봐주면 좋을 것이다. > for문은 총 2번 돌기 때문에 시간 복잡도는 O(n^2)으로 굉장히 비효율적인 알고리즘이다. >** 장점 - 구현하기 쉽다- 이해하기 쉽다** 단점- 특정 요소가 최종 정렬 위치에 ..