본문 바로가기
알고리즘(C언어)/알고리즘 및 실습 강의

(1)실습2주차_우선순위 큐(선택 & 삽입 정렬)_1_문제1,문제2의 코드와 노트

by 코잼민 2024. 9. 1.

[문제1]

#기억해야할 개념 :

순방향으로 배열의 최댓값을 검색하는 j의 범위에서,

  1. 첫번째 요소를 max_i라 하고, j는 인덱스 1을 시작범위로 지정
  2. 끝범위는 i-1가 아닌 i를 포함해야한다.

이에 대한 노트정리 :

##코드 :

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#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;//최댓값을 첫번째 원소로 지정
        for (int j = 1; j <= i; j++)//★j범위에 i포함해야함 
        {
            if (A[max_i] < A[j]) max_i = j;//최댓값 원소 업데이트
        }
 
        //0~i-1번째중 최댓값을 i와 SWAP
        int tmp = A[max_i];
        A[max_i] = A[i];
        A[i] = tmp;
    }
}
 
void PrintArr(int* A, int size) {
 
    for (int i = 0; i < size; i++printf(" %d", A[i]);
    printf("\n");
}
 
int main() 
{
    int N;
    int* A = NULL;
    scanf("%d"&N);
 
    A = (int*)malloc(sizeof(int* N);
    for (int i = 0; i < N; i++)scanf("%d"&A[i]);
 
    InPlaceSort(A, N);
 
    PrintArr(A, N);
 
    free(A);
 
    return 0;
}
cs

 

[문제2]

 

 

#코드 :

 

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
#include <stdlib.h>
#pragma warning (disable : 4996)
 
void InsertSort(int* A, int size) {
 
    for (int i = 1; i < size; i++//i의 범위 : 0(x), 1~끝범위
    {
        int j = i-1;//j의 범위 :처음부터 ~ i뺀 나머지
        int key = A[i];//i를 key로 정함
 
        while (j>=0&&key<A[j]) //A[j]와 key와 비교
        {//오름차순 기준 : key가 더 쎄면, A[j]를 한칸 전진
            A[j + 1= A[j];
            j--;//j이전칸 이동
        }
        //★j+1자리에 key삽입
        A[j + 1= key;
 
    }
}
 
void PrintArr(int* A, int size) {
 
    for (int i = 0; i < size; i++printf(" %d", A[i]);
    printf("\n");
}
 
int main()
{
    int N;
    int* A = NULL;
    scanf("%d"&N);
 
    A = (int*)malloc(sizeof(int* N);
    for (int i = 0; i < N; i++)scanf("%d"&A[i]);
 
    InsertSort(A, N);
 
    PrintArr(A, N);
 
    free(A);
 
    return 0;
}
 
cs