정렬 알고리즘_계수 정렬
# 모든 원소의 값이 0보다 크거나 같다고 가정 array = [7, 5, 9, 0, 3, 1, 6, 2, 9, 1, 4, 8, 0, 5, 2] # 모든 범위를 포함하는 리스트 선언 크기: 가장큰값 +1(모든 값은 0으로 초기화) count = [0] * (max(array)+1) 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=' ') #인덱스 출력
2022. 12. 29.
정렬 알고리즘_ 퀵 정렬
array = [5, 7, 9, 0, 3, 1, 6, 2, 4, 8] def quick_sort(array, start, end): if start >= end: # 원소가 1개인 경우 종료 - 종료조건 return pivot = start # 피벗은 첫 번째 원소 left = start + 1 right = end while left right: # 엇갈렸다면 작은 데이터와 피벗을 교체 array[right], array[pivot] = array[pivot], array[right] else: # 엇갈리지 않았다면 작은 데이터와 큰 데이터를 교체 array[left], array[right] = array[right], array[left] # 분할 이후 왼쪽 부분과 오른쪽 부분에서 각각 정렬 수행 ..
2022. 12. 29.
정렬 알고리즘_삽입 정렬
array = [7,5,9,0,3,1,6,2,4,8] for i in range(1,len(array)): # 첫 번째 원소는 이미 정렬된 상태로 2번째 원소부터 시작 for j in range(i,0,-1): # 인덱스 i부터 1까지 감소하며 반복되는 문법 if array[j] < array[j-1]: # 왼쪽에 숫자가 자기 보다 작다면 왼쪽으로 이동 array[j] , array[j-1] = array[j-1],array[j] else: # 자기보다 작은 데이터를 만나면 그 위치에서 멈춤 break print(array)
2022. 12. 29.
정렬 알고리즘 _ 선택정렬
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[j] < array[min_index]: min_index = j array[i], array[min_index] = array[min_index], array[i]#스와프 print(array)
2022. 12. 29.