본문 바로가기

알고리즘(C언어)/알고리즘 및 실습 강의19

(3)실습3주차_힙과 힙정렬(1)_1_문제1번 ##기억해야할 내용 :UpHeap()메소드- 이론 :  맨 마지막 노드에 값을 삽입 후, 최대 힙 규칙에 맞춰, 적절한 위치로 부모노드로 올리는 메소드- 매개변수 : Heap 구조체 포인터, 해당 조정할 노드의 인덱스(i)- 코드상 순서 :1_ Parent(i)의 노드와 i의 노드 SWAP2_ i노드를 Parent(i)노드로 업데이트3_ while로 i가 루트 도달 전 && 자식노드의 data > 부모노드의 data라면, 반복  DownHeap()메소드- 이론 :  해당 노드 값에서, 최대 힙 규칙에 맞춰, 적절한 위치로 자식노드로 내리는 메소드- 매개변수 : Heap 구조체 포인터, 해당 조정할 노드의 인덱스(i)- 코드상 순서 :1_ △구조로, 부모노드를 (Best==i), 왼쪽자식(L), 오른쪽 자.. 2024. 9. 1.
(2)실습2주차_우선순위 큐(선택 & 삽입 정렬)_2_문제3의 코드와 노트 [문제3]##질문들에 대한 필요한 자료 :### **질문 A: 정렬되지 않은 데이터가 주어지는 경우** 1. **a) 동일한 n으로 여러 번 실행하여, 어느 정렬이 더 빠른지 비교해보자:**    - 정렬되지 않은 데이터에 대해 선택 정렬과 삽입 정렬 중 어느 것이 더 빠른지 비교하는 것이 목표입니다.    - 선택 정렬은 데이터의 초기 상태와 상관없이 항상 \(O(n^2)\)의 시간 복잡도를 가지며, 삽입 정렬은 부분적으로 정렬된 데이터에 대해 더 나은 성능을 보일 수 있습니다. 하지만, 두 알고리즘 모두 최악의 경우에는 \(O(n^2)\) 시간이 걸리기 때문에 성능 차이가 크지 않을 수 있습니다.    - 동일한 크기의 n에 대해 여러 번 프로그램을 실행해보고, 어느 알고리즘이 더 빠른지 실행 시간을.. 2024. 9. 1.
(1)실습2주차_우선순위 큐(선택 & 삽입 정렬)_1_문제1,문제2의 코드와 노트 [문제1]#기억해야할 개념 :순방향으로 배열의 최댓값을 검색하는 j의 범위에서,첫번째 요소를 max_i라 하고, j는 인덱스 1을 시작범위로 지정끝범위는 i-1가 아닌 i를 포함해야한다.이에 대한 노트정리 :##코드 :1234567891011121314151617181920212223242526272829303132333435363738394041424344#include stdio.h>#include stdlib.h>#pragma warning (disable : 4996) void InPlaceSort(int* A, int size) {    for (int i = size - 1; i >= 0; i--)     {        int max_i = 0;//최댓값을 첫번째 원소로 지정        f.. 2024. 9. 1.