자료구조

알고리즘) 선택 정렬(Selection Sort) (2/2)

쫑드기 2020. 5. 23. 22:42

<들어가기에 앞서>

c언어로 작성된 코드입니다.

 

<선택 정렬 응용>

- 문자열을 선택 정렬하는 코드를 작성해보았습니다.

- 포인터 배열을 이용하여 각각의 문자열을 저장한 후 선택 정렬을 실시합니다. 

 

<알아야 할 개념>

- strcmp() 함수

- 이중 포인터

- 포인터 배열

 

<소스 코드>

 

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
#include <stdio.h>
#include <string.h>
 
void swap(char **xp,char **yp);
void printStringArray(char *arr[],int size);
void selectionSort(char *arr[],int n);
 
int main(void)
{
    char *arr[] = { "Bottle","Applepie","Pineapple","Apple","Orange" };
    int n = sizeof(arr) / sizeof(arr[0]);
 
    printStringArray(arr,n);
 
    selectionSort(arr, n);
 
    printStringArray(arr,n);
}
 
void swap(char **xp,char **yp)
{
    char *temp;
    temp = *xp;
    *xp = *yp;
    *yp = temp;
}
 
void selectionSort(char *arr[],int n)
{
    int min_index,i,j;
 
    for (i = 0; i < n - 1; i++)
    {
        min_index = i;
        for (j = i + 1; j < n; j++)
        {
            if (strcmp(arr[min_index],arr[j]) == 1)
            {
                min_index = j;
            }
        }
 
        swap(&arr[min_index],&arr[i]);
    }
    
}
 
void printStringArray(char *arr[],int size)
{
    for (int i = 0; i < size; i++)
        printf("%s\n",arr[i]);
 
    puts("");
}
cs

 

<실행 결과>

 

 

틀린 부분 있으면 피드백 부탁드립니다.

감사합니다. 좋은 하루 보내세요~!