뭐든지시작이반이다
Dream Future
뭐든지시작이반이다
  • 분류 전체보기
    • Spring
      • 개념
      • 기타
    • Java
    • Algorithm
      • 알고리즘 정리
    • DB
      • Postgresql
    • 트러블슈팅
    • Git & Github
    • V&V
    • EFK
    • 북스터디
    • 기타

인기 글

최근 댓글

전체 방문자
오늘
어제

블로그 메뉴

  • 홈
  • 태그
  • 방명록

태그

  • spring
  • git
  • ambiguous오류
  • 파티셔닝
  • fluentd
  • 트러블슈팅
  • docker
  • Kibana
  • JPA
  • requestmapping
  • springboot
  • SelectionSort
  • mybatis
  • Hibernate
  • Controller
  • lombok
  • Kotlin
  • auditing
  • 대규모서비스
  • SqlSessionFactory
  • sqlSessionTemplate
  • spring-boot
  • efk
  • multimodule
  • gradle
  • springbot
  • github
  • dirtyChecking
  • 알고리즘
  • gitignore
hELLO · Designed By 정상우.
뭐든지시작이반이다

Dream Future

Algorithm/알고리즘 정리

selection sort

2020. 7. 13. 15:14

내가 구현한 방법과 정식 알고리즘을 비교해보자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# selection
def selection_sort_not_good(a):  
# 이 방법은 swap을 원래 방법보다 많이 하게 된다. 또한 insertion에 가까운 방법이다.
    n = len(a)
    for i in range(0, n - 1):
        for j in range(i + 1, n):
            if a[j] < a[i]:
                a[i], a[j] = a[j], a[i]
 
 
def selection_sort(a):
    n = len(a)
    for i in range(0, n - 1):
        min_idx = i
        for j in range(i + 1, n):
            if a[min_idx] > a[j]:  # i 뒤의 애들을 전부 흝고 그 중 하나를 골라서 swap
                min_idx = j
 
        a[i], a[min_idx] = a[min_idx], a[i]  # swap
 
Colored by Color Scripter
cs

원래의 방법은 기준이 되는 것 뒤의 애들을 한번 다 흝고 그 중 가장 작은 index와 swap하는 방식이지만 ,

시도하려던 방식은 기준위치의 값보다 작은 값을 발견하면 그대로 swap해서 불필요한 연산을 하게되어 시간이 더 많이 걸린다. 또한 insertion방식에 더 유사한 방법이라고 볼 수도 있다.

저작자표시 비영리 동일조건 (새창열림)

'Algorithm > 알고리즘 정리' 카테고리의 다른 글

binary search  (0) 2020.07.17
bubble sort(optimized)  (0) 2020.07.16
quick sort (기본: 맨 끝을 pivot으로)  (0) 2020.07.16
merge sort  (0) 2020.07.13
insertion sort 이해해보기  (0) 2020.07.13
    'Algorithm/알고리즘 정리' 카테고리의 다른 글
    • bubble sort(optimized)
    • quick sort (기본: 맨 끝을 pivot으로)
    • merge sort
    • insertion sort 이해해보기
    뭐든지시작이반이다
    뭐든지시작이반이다
    기록장입니다.

    티스토리툴바