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
- Get
- 프로그래머스
- sw expert academy
- react-redux
- 매일메일
- 알고리즘
- programmers
- maeil-mail
- 자바
- react
- JavaScript
- 항해플러스
- json-server
- redux-saga
- 코딩테스트합격자되기
- redux
- useDispatch
- 리액트
- react-router
- SW
- redux-toolkit
- 이코테
- Algorithm
- C++
- java
- createSlice
- axios
- Python
- 테코테코
- 항해99
Archives
- Today
- Total
Binary Journey
[이코테] 4. 정렬 알고리즘 본문
반응형
* 선택정렬
- 처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾼다 * n
result = []
def selection_sort1(data):
if len(data) > 1:
n = data[0]
m = data[1:]
temp = min(m)
index = 0
if n > min(m):
index = m.index(temp)
m[index] = n
result.append(temp)
else:
result.append(n)
return selection_sort1(m)
else:
result.append(data[0])
def selection_sort2(array):
for i in range(len(array)):
min_index = i
for j in range(i + 1, len(array)):
if array[min_index] > array[j]:
min_index = j
array[i], array[min_index] = array[min_index], array[i]
print(array)
data_list = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8]
selection_sort1(data_list)
print(result)
selection_sort2(data_list)
* 삽입정렬
- 처리되지 않은 데이터를 하나씩 골라 적절한 위치에 삽입
- 선택 정렬보다 효율적
* study 하면서 피드백받은 건데 insertion_sort1로 쓴 코드는 버블정렬이라고 한다..!
def insertion_sort1(data):
for i in range(len(data)):
for j in range(i + 1, len(data)):
if data[i] > data[j]:
# temp = data[j]
# data[j] = data[i]
# data[i] = temp
data[i], data[j] = data[j], data[i]
print(data)
def insertion_sort2(array):
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]
else:
break
print(array)
data_list = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8]
insertion_sort1(data_list)
data_list = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8]
insertion_sort2(data_list)
* 퀵정렬
def quick_sort1(data, start, end):
if (start >= end): return
pivot = start
left = start + 1
right = end
while left <= right:
while left <= end and data[left] <= data[pivot]:
left += 1
while right > start and data[right] >= data[pivot]:
right -= 1
if left > right:
data[right], data[pivot] = data[pivot], data[right]
else:
data[left], data[right] = data[right], data[left]
quick_sort1(data, start, right - 1)
quick_sort1(data, right + 1, end)
def quick_sort2(data):
if len(data) > 1:
pivot = data[0]
tail = data[1:]
left = [x for x in tail if x <= pivot]
right = [x for x in tail if x > pivot]
return quick_sort2(left) + [pivot] + quick_sort2(right)
else:
return data
data_list = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8]
quick_sort1(data_list, 0, len(data_list) - 1)
print(data_list)
data_list = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8]
print(quick_sort2(data_list))
반응형
'Algorithm > 알고리즘 스터디(2021.12)' 카테고리의 다른 글
[Algorithm] 다익스트라 최단 경로 알고리즘 (0) | 2022.03.13 |
---|---|
[이코테] dfs, bfs 복습 (0) | 2022.02.14 |
[이코테] dfs & bfs 문제풀이 (0) | 2022.02.08 |
[이코테] 구현: 시뮬레이션과 완전탐색 (0) | 2022.01.04 |
[이것이코딩테스트다][MEMO] 10, 11강, 12강, 13강 (0) | 2021.12.20 |