: 데이터를 특정한 기준에 따라서 순서대로 나열하는 것
array = [7,5,9,0,3,1,6,2,4,8]
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]
#swap
print(array)
: 데이터를 하나씩 확인하여, 적절한 위치에 삽입하는 정렬
array = [7,5,9,0,3,1,6,2,4,8]
for i in range(1, len(array)):
#1번 인덱스부터 시작
for j in range(i, 0,-1):
#i번째 인덱스부터 1(end+1)까지 1씩 감소
if array[j] < array[j-1]:
#왼쪽 인덱스가 더 크면
array[j], array[j-1]= array[j-1],array[j]
#swap(왼쪽 이동)
else:
break
#왼쪽 인덱스가 더 작으면 현 위치에 멈춤(삽입)
print(array)
: 기준 데이터 설정 후 큰수와 작은 수를 교환한 후 리스트를 반으로 나누는 형식
array = [5,7,9,0,3,1,6,2,4,8]
def quick_sort(array, start, end):
if start >= end:
return
#퀵 정렬 종료 조건 : 원소 하나면 종료
pivot = start
#첫번째 원소는 pivot
left = start +1
right = end
while left < = right:
while left <= end and array[left] <= array[pivot]:
left += 1
#오른쪽 인덱스보다 작고, 피벗보다 작을 때 left 오른쪽 이동 반복
while right > start and array[right] >= array[pivot]:
right -= 1
#왼쪽 인덱스보다 크고 피벗보다 클 때 right 왼쪽 이동 반복
if left > right:
array[right], array[pivot] = array[pivot], array[right]
#엇갈림 발생 시 피벗과 작은 데이터 swap
else:
array[left], array[right]= array[right],array[left]
#엇갈림 발생하지 않으면 left right swap
quick_sort(array, start, right-1)
quick_sort(array, right +1, end)
quick_sort(array, 0, len(array)-1)
print(array)
array = [5,7,9,0,3,1,6,2,4,8]
def quick_sort(array):
if len(array)<= 1:
return array
#퀵 정렬 종료 조건 : 원소 하나면 종료
pivot = array[0]
#피벗은 첫 번째 원소
tail = array[1:]
#피벗 이후 리스트
left_side = [x for x in tail if x <= pivot]
#피벗 기준 작은 데이터 리스트
right_side = [x for x in tail if x > pivot]
#피벗 기준 큰 데이터 리스트
return quick_sort(left_side)+[pivot] + quick_sort(right_side)
#왼쪽 리스트 퀵 정렬, 오른쪽 리스트 퀵 정렬 이후 가운데 피벗 넣어 전체 리스트 반환
print(quick_sort(array))
:
array = [7,5,9,0,3,1,6,2,4,8]
count = [0] * (max(array) +1)
#모든 범위 포함하는 리스트 선언(0으로 초기화)
for i in range (len(array)):
count[array[i] += 1]
#데이터에 해당하는 인덱스 값 증가(횟수 증가)
for i in range (len(count)):
for j in range(count[i]):
print(i, end = '')
#띄어쓰기로 구분
: 병합 정렬를 기반으로 만들어짐(병합 정렬은 퀵정렬보다 느림)
: 리스트 객체의 내장 함수로, 별도의 정렬된 리스트 반환하지 않고 내부 원소가 바로 정렬된다.
array = [('바나나', 2),('사과', 5),('당근', 3)]
def setting(data):
return data[1]
result = sorted(array, key = setting)
#1번 인덱스 값이 key가 되어 정렬된다.
print(result)