simple_sort

swap함수는 있는걸 씁니다 swap 함수는 다음 라이브러리에 있습니다.

1
#include<utility>

bubble

모든 값은 비교해서 스왑한다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
template<typename T>
void buble_sort(T a[], int num)
{
    for (int i = 0; i < num -1; i++)
    {
        for (int j = 0; j < num - i -1; j++)
        {
            if (a[j] > a[j + 1])
            {
                swap(a[j], a[j + 1]);
            }
        }
    }

}

selection_sort

가장작은 값을 찾아서 맨밑으로 넣는다

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
template<typename T>
void selection_sort(T a[], int num)
{
    for (int i = 0; i < num - 1; i++)
    {
        int Minindex = i;
        for (int j =  i + 1 ; j < num ; j++)
        {
            if (a[j] < a[Minindex])
            {
                Minindex = j;
            }
        }
        swap(a[Minindex], a[i]);
    }
    return ;
}

insertion_sort

삽입정렬, 뒤의 값을 밀어내고 값을 넣는다

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
template<typename T>
void insertion_sort(T a[], int num)
{
    for (int i = 1 ; i < num ; i++ )
    {
        T item = a[i];
        int j = i ;
        while (--j >= 0 && item < a[j])
        {
            a[j + 1] = a[j];
        }
        a[++j] = item;
    }

}
실제 삽입을 했을때,

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
template<typename T>
int sorting_insertion(T a[], int num, T item)
{
        int j = num;
        while (--j >= 0 && item < a[j])
        {
            a[j + 1] = a[j];
        }
        a[++j] = item;

    return num+1;
}