반응형

c언어 순차 탐색 (Linear Search) - 단어 배열에서 특정 문자의 포함 여부 및 위치 찾기

 

 

단어에서 문자의 위치 찾기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/* Linear search */
#include <stdio.h>
 
int linearSearch(char ch, int n, char word[]) {
    int result = -1;
    for (int i = 0; i < n; i++) {
        if (word[i] == ch) result = i;
    }
    return result;
}
 
int main() {
    char a[6= "orange";
    int result = linearSearch('a'6, a);
    printf("result: %d\n", result);
}

 

 

 

 

 

발견시 즉시 결과 반환

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* Speed up linear search */
#include <stdio.h>
 
int linearSearch(char ch, int n, char word[]) {
    for (int i = 0; i < n; i++) {
        if (word[i] == ch) return i;
    }
    return -1;
}
 
int main() {
    char a[6= "orange";
    int result = linearSearch('a'6, a);
    printf("result: %d\n", result);
}

 

 

 

복잡성 최소화 - boolean 활용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdbool.h>
 
int linearSearch(char ch, int n, char a[]) {
    int result = -1;
    bool found = false;
    for (int i = 0; i < n && ! found; i++) {
        if (a[i] == ch) {
            result = i;
            found = true;
        }
    }
    return result;
}
 
int main() {
    char a[6= "orange";
    int result = linearSearch('a'6, a);
    printf("result: %d\n", result);
}

 

반응형