반응형
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
- HTML공부
- React
- 조회수 증가
- 욕심쟁이 알고리즘
- 데이터셋
- 데이터셋 직접
- css
- 정렬알고리즘
- 드라이브 마운트
- html
- 이것이 취업을 위한 코딩 테스트다 with 파이썬
- 방만들기
- customized yolov5
- springboot
- isDisable
- 글 검색
- 정처기 실기
- labelImg
- 스프링부트
- combobox
- 게시판
- YOLOv5
- thymeleaf-layout-dialect
- object detection
- 컴활1급필기
- 게시판만들기
- 정처기
- 직접 라벨링
- 객체 감지
- 모델 훈련
Archives
- Today
- Total
기록장
정렬 알고리즘 (2) - 삽입 정렬 본문
삽입 정렬 : 특정한 데이터를 적절한 위치에 삽입한다는 의미로, 그 앞의 데이터는 이미 정렬되어 있다고 가정한다.
아래와 같은 배열이 있다고 하자.
*** 핑크색은 이미 정렬된 데이터
삽입 정렬은 두번째 데이터부터 시작한다. 첫번째 데이터는 이미 정렬되어 있다고 가정하기 때문이다.
step1. 두번째 데이터 5가 어떤 위치에 삽입되어야 하는지 판단한다. 7의 앞에 갈지 뒤에 갈지 선택지는 2개이다. 5는 7보다 작기 때문에 7의 왼쪽에 삽입한다.
step2. 9가 어떤 위치에 삽입되어야 하는지 판단한다. 선택지는 3개이지만 9는 7보다 크기 때문에 그대로 둔다.
step3. 0이 어떤 위치에 삽입되어야 하는지 판단한다. 0은 5보다 작기 때문에 5의 왼쪽에 삽입한다.
위의 과정을 반복하면
정렬이 된 배열을 얻을 수 있다.
array = [7,5,9,0,3,1,6,2,4,8]
for i in range(1, len(array)): #두번째 데이터부터 시작
for j in range(i,0,-1): #정렬된 데이터에서 어디 삽입할 지 판단
if(array[j]<array[j-1]): #한칸씩 왼쪽으로 이동
array[j],array[j-1] = array[j-1], array[j] #swap
else: #자기보다 작은 데이터를 만나면 그 위치에서 멈춤
break
print(array)
코드를 작성하면 이렇다 ~~
반응형
'코딩테스트 공부 > 정렬 sorting' 카테고리의 다른 글
정렬 알고리즘 (1) - 선택 정렬 (0) | 2021.05.24 |
---|
Comments