Step by step

My diary

...

Search

breakinformation. Powered by Blogger.

2019년 3월 29일 금요일

sort strings


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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
#include <stdlib.h>
 
int String_Compare(const char* _First_String_, const char* _Second_String_);
char* String_Copy(char* destination, const char* source);
 
void Bubble_Sort(char array[][10], int size);
void swap(char array[][10], int Partial_Element);
 
void display(char array[][10], int size);
 
int main(void) {
 
    char _String[10][10= { "apple""banana""orange""pineapple""melon""mango""papaya""fig""coconut""pear" };
 
    display(_String, 10);
 
    printf("\n\n== bubble sort ==\n");
    Bubble_Sort(_String, 10);
    display(_String, 10);
 
    return 0;
}
 
void display(char array[][10], int size) {
 
    int index = 0;
    for (index = 0; index < size; index++) {
 
        printf("%s\n"*(array + index));
    }
 
    return;
}
 
void Bubble_Sort(char array[][10], int size) {
 
    int All_Element = 0, Partial_Element = 0;
    for (All_Element = 0; All_Element < size; All_Element++) {
        for (Partial_Element = 0; Partial_Element < size - 1; Partial_Element++) {
            if (String_Compare(*(array + Partial_Element + 0), *(array + Partial_Element + 1)) > 0) {
 
                swap(array, Partial_Element);
            }
        }
        Partial_Element++;
    }
    return;
}
 
void swap(char array[][10], int Partial_Element) {
 
    char* temporary = (char*)calloc(100sizeof(char));
    String_Copy(temporary, *(array + Partial_Element + 0));
    String_Copy(*(array + Partial_Element + 0), *(array + Partial_Element + 1));
    String_Copy(*(array + Partial_Element + 1), temporary);
 
    return;
}
 
char* String_Copy(char* destination, const char* source) {
 
    char* Return_Result = destination;
    while (*destination++ = *source++);
    return (char*)Return_Result;
}
 
int String_Compare(const char* _First_String_, const char* _Second_String_) {
 
    int result = 0;
    while (!(result = *(unsigned char*)_First_String_ - *(unsigned char*)_Second_String_) && *_Second_String_)
        ++_First_String_, ++_Second_String_;
 
    if (result < 0return -1;
    else if (result > 0return 1;
    return 0;
}
 
cs

0 개의 댓글:

댓글 쓰기