반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 게시판만들기
- 드라이브 마운트
- YOLOv5
- 컴활1급필기
- 게시판
- 이것이 취업을 위한 코딩 테스트다 with 파이썬
- combobox
- 조회수 증가
- customized yolov5
- labelImg
- 정처기
- isDisable
- 욕심쟁이 알고리즘
- 글 검색
- 방만들기
- 정렬알고리즘
- springboot
- 객체 감지
- 모델 훈련
- 데이터셋
- css
- object detection
- 직접 라벨링
- 스프링부트
- thymeleaf-layout-dialect
- 정처기 실기
- html
- React
- HTML공부
- 데이터셋 직접
Archives
- Today
- Total
기록장
정렬 알고리즘 (1) - 선택 정렬 본문
선택 정렬 : 데이터가 무작위로 여러 개 있을 때 그 중 가장 작은 데이터를 선택하여 맨 앞에 있는 데이터와 바꾸고 이 과정을 반복하는 것
예를 들어 아래 그림과 같은 배열이 있다고 생각해보자.
step1. 이 배열에서 가장 작은 데이터는 0 이다. 0을 선택하여 제일 앞에 있는 7과 바꾼다.
step2. 핑크색으로 색칠된 데이터는 이미 정렬된 데이터를 의미한다. 그 데이터를 제외하고 다시 가장 작은 데이터를 선택한다 (여기서는 1) 그리고 가장 앞에 있는 데이터 5와 맞바꾼다.
이러한 과정을 반복하면
정렬된 배열을 얻을 수 있다.
이 과정을 코드로 작성해보면 아래와 같다.
array = [7,5,9,0,3,2,6,2,4]
for i in range(len(array)):
min_index = i #가장 작은 데이터의 인덱스
for j in range(i+1,len(array)): #정렬 안된 부분에서 가장 작은 데이터 찾기
if(array[j] < array[min_index]): #더 작은 데이터가 있다면
min_index = j #업데이트
array[i], array[min_index] = array[min_index], array[i] #데이터 swap
print(array)
선택 정렬의 시간 복잡도는 O(n2)이다. 반복문이 두번 사용 되었기 때문이다. 가장 작은 데이터와 맨앞의 데이터를 바꾸는 반복문 하나와 가장 작은 데이터를 찾기 위한 반복문 하나.
반응형
'코딩테스트 공부 > 정렬 sorting' 카테고리의 다른 글
정렬 알고리즘 (2) - 삽입 정렬 (0) | 2021.05.24 |
---|
Comments