본문 바로가기

정렬4

[자료구조/C++] 정렬 (Sorting) : 퀵정렬 (Quick Sort) 전공 수업과 교안을 바탕으로 개인적으로 공부한 내용입니다. 공부 내용을 정리하는 과정에서 잘못된 정보가 있을 수 있으니, 참고용으로만 봐주시면 감사하겠습니다. 피드백은 언제든 환영입니다! 😊 ✔️ 퀵정렬 (Quick Sort) 퀵정렬은 분할정복 (Divide and Conquer) 알고리즘 중 하나로, 평균적으로 빠른 실행 속도를 갖는 정렬 알고리즘이다. (분할 정복 알고리즘은, 큰 문제를 작은 하위 문제로 분할하여 독립적으로 해결한 후, 해결한 것들을 결합하여 전체 문제를 해결하는 방법론을 말한다) 퀵 정렬 알고리즘은 재귀적으로 접근하여 구현할 수 있으며 구현 방법은 다음과 같다. 우선, 퀵 정렬에서 기준이 되는 피벗(pivot) 를 설정하고, 피벗을 기준으로 배열을 두 개의 부분 배열로 분할한다. 분.. 2023. 9. 16.
[자료구조/C++] 정렬(Sorting) : 선택정렬(Selection Sort) 전공 수업과 교안을 바탕으로 개인적으로 공부한 내용입니다. 공부 내용을 정리하는 과정에서 잘못된 정보가 있을 수 있으니, 참고용으로만 봐주시면 감사하겠습니다. 피드백은 언제든 환영입니다! 😊 ✔️ 선택정렬 (Selection Sort) 선택정렬은 주어진 배열에서 첫번째 원소부터 마지막 원소까지 차례대로 기준이 되는 원소로 설정하고, 해당 원소의 다음 원소들 중 가장 작은 원소를 찾아 기준이 되는 원소와 교환하는 방식으로 정렬하는 알고리즘이다. 즉, 주어진 배열에서 가장 작은 원소 값을 찾고, 해당 원소를 배열의 처음 원소와 교환한다. 다음으로 남은 배열에서 가장 작은 원소를 찾아 다음 위치의 원소와 교환하며 이러한 과정을 배열의 마지막 원소까지 반복하면 된다. 예를 들어 {30, 20, 40, 10, 5.. 2023. 9. 14.
[자료구조/C++] 정렬(Sorting) : 버블정렬(Bubble Sort) 전공 수업과 교안을 바탕으로 개인적으로 공부한 내용입니다. 공부 내용을 정리하는 과정에서 잘못된 정보가 있을 수 있으니, 참고용으로만 봐주시면 감사하겠습니다. 피드백은 언제든 환영입니다! 😊 ✔️ 버블정렬 (Bubble Sort) 버블 정렬은 배열에서 인접한 두 원소 값을 비교하면서 더 적은 수가 앞으로 가도록 교환하여 정렬하는 방식을 말한다. 먼저 첫 번째 step에서는 주어진 배열을 처음부터 끝까지 순회하면서 현재 원소와 인접한 그 다음 원소를 비교하고, 만약 현재 원소가 그 다음 원소보다 크면 두 원소를 서로 교환한다. 이런 방식으로 배열의 끝에 도달할 때까지 계속해서 인접한 원소끼리 비교하고 교환하는 과정을 반복하면 된다. 따라서 배열의 끝에 도달하면 가장 큰 원소가 배열의 맨 끝에 존재하게 되고.. 2023. 9. 13.
[자료구조/C++] 정렬(Sorting) : 삽입정렬(Insertion Sort) 전공 수업과 교안을 바탕으로 개인적으로 공부한 내용입니다. 공부 내용을 정리하는 과정에서 잘못된 정보가 있을 수 있으니, 참고용으로만 봐주시면 감사하겠습니다. 피드백은 언제든 환영입니다! 😊 ✔️ 삽입정렬 (Insertion Sort) 예를 들어 {-∞, 30, 20, 40, 10, 5, 10,30, 15} 로 구성된 배열 A가 있다고 하자. (구현의 편리함을 위해 0번째 인덱스는 음의 무한대 값을 dummy값으로 설정했다) 삽입 정렬은 배열의 두번째 값부터 순서대로 비교할 값을 설정하여 비교할 값의 인덱스보다 이전에 있는 배열 값들을 하나씩 비교해 적절한 위치를 찾고, 찾은 위치를 기준으로 나머지 배열 값들은 뒤로 옮기고, 찾아둔 적절한 위치에 해당 비교한 값을 삽입하여 정렬하는 알고리즘이다. 이해를 .. 2023. 9. 10.