알고리즘 (1)

subinii·2024년 4월 1일

DS 25기

목록 보기
13/46

1. 검색

  • 선형 검색 : 선형으로 나열되어 있는 데이터를 순차적으로 스캔하면서 원하는 값을 찾는다.
    ⇒ 인덱스 0~끝까지 순차적으로 검색 ⇒ 검색 성공 or 실패

  • 보초법 : 마지막 인덱스에 찾으려는 값을 추가해서 찾는 과정을 간략화한다.
    ⇒ 인덱스 0~끝까지 순차적으로 검색
    ⇒ 검색 성공 : 마지막 이전에 [찾는 값]이 검색된 경우
    ⇒ 검색 실패 : 마지막에 [찾는 값]이 검색된 경우

  • 이진 검색 : 정렬되어 있는 자료구조에서 중앙값과의 크고 작음을 이용해서 데이터를 검색한다.

2. 순위 알고리즘

  • 순위 : 수의 크고 작음을 이용해서 수의 순서를 정하는 것
ex) 
for idx, num1 in enumerate(nums):
    for num2 in nums:
        if num1 < num2:
            ranks[idx] += 1


print(f'nums : {nums}')
print(f'ranks : {ranks}')

for i, n in enumerate(nums):
    print(f'num : {n} \t rank : {ranks[i] +1}')

3. 버블 정렬 알고리즘

  • 버블 정렬 : 처음부터 끝까지 인접하는 인덱스의 값을 순차적으로 비교하면서 큰 숫자를 가장 끝으로 옮기는 알고리즘이다.
  • 버블 정렬 시 깊은 복사와 얕은 복사 구분해서 코드 짜기 (copy함수)
ex)
length = len(nums) - 1
for i in range(length):
    for j in range(length - i):
        if nums[j] > nums[j+1]:
            nums[j], nums[j+1] = nums[j+1], nums[j]

        print(nums)
    print()

4. 삽입 정렬 알고리즘

  • 삽입 정렬 : 정렬되어 있는 자료 배열과 비교해서 정렬 위치를 찾는다.
ex) 오름차순으로 구하기 
for i1 in range(1, len(nums)):
    i2 = i1 -1
    cNum = nums[i1]

    while nums[i2] > cNum and i2 >= 0:
        nums[i2 + 1] = nums[i2]
        i2 -= 1

    nums[i2 + 1] = cNum

    print((f'nums : {nums}'))

5. 선택 정렬 알고리즘

  • 선택 정렬 : 주어진 리스트 중에 최솟값을 찾아, 그 값을 맨 앞에 위치한 값과 교체하는 방식으로 자료를 정렬하는 알고리즘
  • 깊은 복사와 얕은 복사 구분해서 코드 짜기 (copy 함수)

6. 최댓값 알고리즘

  • 최댓값 : 자료구조에서 가장 큰 값을 찾는다.

7. 최솟값 알고리즘

  • 최솟값 : 자료구조에서 가장 작은 값을 찾는다.

8. 최빈값 알고리즘

  • 최빈값 : 데이터에서 빈도수가 가장 많은 데이터

  • 최댓값을 이용해서 최빈값 구하기

  • class와 함수를 활용해서 구해야함

“이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.”

profile
데이터 공부 기록

0개의 댓글