상세 컨텐츠

본문 제목

[C] 삽입 정렬

C++ 문법

by simstealer 2023. 1. 25. 13:38

본문

#include <stdio.h>
#include <string.h>

void InsertionSort(int DataSet[], int Length)
{
    int i = 0;
    int j = 0;
    int value = 0;

    // 삽입 소트는 인덱스 1부터 시작하기 때문에 i = 1이라고 주었다.
    for (i = 1; i < Length; i++)
    {
        if (DataSet[i - 1] <= DataSet[i])
        {
            continue;
        }

        value = DataSet[i];

        for (j = 0; j < i; j++)
        {
            if (DataSet[j] > value)
            {
                // memmevo는 동적메모리를 sizeof 만큼 만들어서  sizeof만큼의 값을 저장하고 dest 주소로 옮긴다.
                memmove(&DataSet[j + 1], &DataSet[j], sizeof(DataSet[0]) * (i - j));
                DataSet[j] = value;
                break;
            }
        }
    }  
}

int main()
{
    /*삽입 정렬
        1. 앞쪽 수와 현재 수를 비교해서 현재 수가 크면 countinue.
        2. 작다면 현재 수를 변수에 저장한다.
        3. 큰 값들을 뒤로 옮기고 변수 값을 저장한다.
     */

    int DataSet[] = { 6, 4, 2, 3, 1, 5 };
    int Length = sizeof(DataSet) / sizeof(DataSet[0]);
    int i = 0;

    InsertionSort(DataSet, Length);

    for (int i = 0; i < Length; i++)
    {
        printf("%d", DataSet[i]);
    }
    printf("\n");

    return 0;
}

'C++ 문법' 카테고리의 다른 글

[C] 퀵 정렬(qsort)  (0) 2023.01.26
[C] 퀵 정렬  (0) 2023.01.26
[C] 버블 소트  (0) 2023.01.25
[C++] inline 함수  (0) 2023.01.04
[C++] vector 배열 내, 문자열 값들을 sort()하기  (0) 2022.07.04

관련글 더보기

댓글 영역