C++ 12

[Sorting] Quick Sort (퀵 정렬)

원리 퀵정렬은 Divide & Conquer algorithm중 하나로 "pivot"이라는 기준값을 지정하여 pivot을 기점으로 배열을 partitioning하여 정렬하는 알고리즘이다. 보통 pivot은 배열의 맨 앞 원소를 지정하는데 두번째 원소부터 오른쪽으로 pivot보다 큰값을 찾고, 맨 마지막 원소부터 왼쪽으로 pivot보다 작은 값을 찾아나간다. 만약 왼쪽으로 훑던 것이 오른쪽을 추월한다면 pivot과 오른쪽 기준을 swap하고 그렇지 않다면 왼쪽 오른쪽 값을 swap한다. Complexity 모든 원소를 한번씩 훑기때문에 O(n), 배열을 반으로 계속 divide하기 때문에 O(log2n)으로 총 O(nlogn)이라는 빠른 속도를 가진다. 주의사항 - Worst Case ! 배열이 이미 정렬..

Algorithm 2022.03.22

switch case문 jump to case label 오류

이번에 코드에 switch문을 쓰다가 더보기 error: cannot jump from switch statement to this case label 이런 에러를 마주하였다. 처음 보는 오류라 구글링을 해본 결과 간단한 문법 오류로 블럭 {} 으로 감싸주면 해결됨을 알아냈다. 그렇다면 왜 이런 오류가 나는걸까? 제어 전달은 변수의 범위를 입력할 수 없으므로, 명령문 내에서 선언문이 나타나면 자체 선언문에서 범위를 지정해주어야한다고 한다. 즉, 변수 x를 case문에서 선언했을때 case문에서의 범위를 지정해주어야 error발생 없이 넘어갈 수 있다. ∴ 결론 : case문에서 변수 사용시 블럭으로 범위를 구분지어주어야 한다. https://blankspace-dev.tistory.com/386 (참고 ..

CS/C++ 2021.11.20
728x90