무민은귀여워

Bubble(버블 정렬), Insertion(삽입 정렬), Quick(퀵 정렬) 소스 본문

IT/알고리즘

Bubble(버블 정렬), Insertion(삽입 정렬), Quick(퀵 정렬) 소스

moomini 2019. 11. 27. 17:51
반응형

Bubble(버블 정렬)

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
#include <stdio.h>
 
void BubbleSort(int DataSet[], int Length)
{
    int i = 0;
    int j = 0;
    int temp = 0;
 
    for (i = 0; i < Length - 1; i++)
    {
        for (j = 0; j < Length - (i + 1); j++)
        {
            if (DataSet[j] > DataSet[j + 1])
            {
                temp = DataSet[j + 1];
                DataSet[j + 1= DataSet[j];
                DataSet[j] = temp;
            }
        }
    }
}
 
int main()
{
    int DataSet[] = { 642315 };
    int Length = sizeof DataSet / sizeof DataSet[0];
    int i = 0;
 
    BubbleSort(DataSet, Length);
 
    for (int i = 0; i < Length; i++)
    {
        printf("%d ", DataSet[i]);
    }
 
    printf("\n");
 
    return 0;
}
cs

Insertion(삽입 정렬)

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
#include <stdio.h>
#include <string.h>
 
void InsertionSort(int DataSet[], int Length)
{
    int i = 0;
    int j = 0;
    int value = 0;
 
    for (int 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)
            {
                memmove(&DataSet[j + 1], &DataSet[j], sizeof(DataSet[0]) * (i - j));
                DataSet[j] = value;
                break;
            }
        }
    }
}
 
int main()
{
    int DataSet[] = { 642315 };
    int Length = sizeof DataSet / sizeof DataSet[0];
    int i = 0;
 
    InsertionSort(DataSet, Length);
 
    for (i = 0; i < Length; i++)
    {
        printf("%d ", DataSet[i]);
    }
 
    printf("\n");
 
    return 0;
}
cs

 

Quick(퀵 정렬)

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <stdio.h>
 
void Swap(int* A, int* B)
{
    int Temp = *A;
    *= *B;
    *= Temp;
}
 
int Partition(int DataSet[], int Left, int Right)
{
    int First = Left;
    int Pivot = DataSet[First];
 
    ++Left;
 
    while (Left <= Right)
    {
        while (DataSet[Left] <= Pivot && Left < Right)
            ++Left;
 
        while (DataSet[Right] > Pivot&& Left <= Right)
            --Right;
 
        if (Left < Right)
            Swap(&DataSet[First], &DataSet[Right]);
        else
            break;
    }
 
    Swap(&DataSet[First], &DataSet[Right]);
 
    return Right;
}
 
void QuickSort(int DataSet[], int Left, int Right)
{
    if (Left < Right)
    {
        int Index = Partition(DataSet, Left, Right);
 
        QuickSort(DataSet, Left, Index - 1);
        QuickSort(DataSet, Index + 1, Right);
    }
}
 
int main()
{
    int DataSet[] = { 642315 };
    int Length = sizeof DataSet / sizeof DataSet[0];
    int i = 0;
 
    QuickSort(DataSet, 0, Length - 1);
 
    for (i = 0; i < Length; i++)
    {
        printf("%d ", DataSet[i]);
    }
 
    printf("\n");
 
    return 0;
}
cs

 

반응형

'IT > 알고리즘' 카테고리의 다른 글

이진트리 순회  (0) 2021.05.18
[백준]1339 단어 수학  (0) 2021.05.17
[코딩인터뷰] 자료구조  (0) 2019.11.22
[알고스팟] 울타리 잘라내기 FENCE  (0) 2019.11.19
[알고스팟] 쿼드 트리 뒤집기 QUADTREE  (0) 2019.11.19
Comments