SSAFY/Python문법 정리

[Python] 순차 검색

황성안 2021. 2. 16. 13:30
728x90

순차 검색

 - 일렬로 되어 있는 자료를 순서대로 검색하는 방법

 - 가장 간단, 직관적

 - 순차구조로 구현된 자료구조에서 원하는 항목을 찾을때

 - 알고리즘 단순 구현이 쉬움, 수행시간 급격 증가 비효율적

 

검색 과정

- 첫번째 원소부터 수서대로 검색 대상과 키 값(우리가 찾는 값)이 동일한지 찾는다.

- 찾으면 그 원소의 인덱스(위치)or 값을 반환

- 자료구조 마지막까지 검색한다음 찾지 못하면 실패.

 

- 정렬되어 있지 않은 경우

- 찾고자 하는 원소의 순서에 따라 비교회수가 결정됨

 

시간 복잡도:O(n)

 

 

 

예제 문제 )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
arr = [4,9,11,23,19,7]
 
key = 10
 
for i in range(len(arr)):
    if key == arr[i]:
        print(i, "에 위치 하고있음")
        break
else:
    print("못찾음.")
 
arr = [4,7,9,11,19,23]
 
for i in range(len(arr)):
    if key == arr[i]:
        print(i, " 에 위치하고 있음")
        break
    elif key < arr[i]:
        print(i, " 번째까지만 탐색해봄 이제 그만")
        break
else:
    print("못찾음")
cs

 

 

이진 검색

자료의 가운데에 있는 항목의 키 값과 비교하여 다음 위치를 결정, 계속 반복한다.

자료가 정렬된 상태여야 가능함.

 

 

검색 과정

자료의 중앙 원소 고름

중앙 원소 값과 찾고자하는 목표 값을 비교

목표 값이 중앙 원소의 값보다 작으면 왼쪽 크면 오른쪽

찾을때까지 반복!

 

 

인덱스

DB에서 유래됨

동작 속도를 높여주는 자료구조를 말함

DB가 아닌 곳에서는 Look up table 등의 용어를 사용하기도 함

 

보통 필요한 디스크 공간보다 작음.

인덱스는 키-필드만 가지고있고 테이블의 다른 세부 항목들은 갖고있지 않기때문

 

셀렉션 알고리즘

저장되어있는 자료로부터 k번째로 큰 혹은 작은 원소를 찾는 방법

(최소값, 최대값 혹은 중간값을 찾는 알고리즘을 의미하기도함)

 

선택 정렬

주어진 자료들 중 가장 작은 값의 원소부터 차례대로 선택하여 위치를 교환하는 방식

 

과정 

 - 주어진 리스트 중에서 최소값 찾기

 - 그 값을 리스트의 맨 앞에 위치한 값과 교환

 - 맨 처음 위치를 제외한 나머지 리스트 과정 반복

 

시간복잡도

O(n^2)

 

코드

1
2
3
4
5
6
7
def selectionSort(a) :
    for i in range(0len(a)-1):
        min = i
        for j in range(i+1len(a)):
            if a[min] > a[j]:
                min = j
        a[i], a[min] = a[min], a[i]
cs

 

 

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
def selectionSort(a) :
    for i in range(0len(a)-1):
        min = i
        for j in range(i+1len(a)):
            if a[min] > a[j]:
                min = j
        a[i], a[min] = a[min], a[i]
 
 
arr = [1015219614]
 
for i in range(len(arr)-1):
    min_idx = i
 
    for j in range(i+1len(arr)):
        if arr[j] < arr[min_idx]:
            min_idx = j
 
    arr[i], arr[min_idx] = arr[min_idx], arr[i]
    #temp = arr[i]
    #arr[i] = temp
    #temp = 0
    #과 같은 뜻
print(arr)
 
selectionSort(arr)
print(arr)
cs

 

728x90