def bubbleSort(num_list):
for loop_count in range(len(num_list)-1, 0, -1):
for idx in range(loop_count):
if num_list[idx] > num_list[idx+1]:
tmp = num_list[idx]
num_list[idx] = num_list[idx+1]
num_list[idx+1] = tmp
return num_list
def selectionSort(num_list):
for idx in range(0,len(num_list)-1):
min_idx = idx
for num in range(idx+1, len(num_list)):
if num_list[num] < num_list[min_idx]:
min_idx = num
tmp = num_list[min_idx]
num_list[min_idx] = num_list[idx]
num_list[idx] = tmp
return num_list
def insertionSort(num_list):
for idx in range(1,len(num_list)):
present = num_list[idx]
position = idx
while position>0 and num_list[position-1]>present:
num_list[position]=num_list[position-1]
position = position-1
num_list[position]=present
return num_list
def merge_sort(list):
if len(list) <= 1:
return list
mid = len(list) // 2
leftList = list[:mid]
rightList = list[mid:]
leftList = merge_sort(leftList)
rightList = merge_sort(rightList)
return merge(leftList, rightList)
def merge(left, right):
result = []
while len(left) > 0 or len(right) > 0:
if len(left) > 0 and len(right) > 0:
if left[0] <= right[0]:
result.append(left[0])
left = left[1:]
else:
result.append(right[0])
right = right[1:]
elif len(left) > 0:
result.append(left[0])
left = left[1:]
elif len(right) > 0:
result.append(right[0])
right = right[1:]
return result
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
lesser_arr, equal_arr, greater_arr = [], [], []
for num in arr:
if num < pivot:
lesser_arr.append(num)
elif num > pivot:
greater_arr.append(num)
else:
equal_arr.append(num)
return quick_sort(lesser_arr) + equal_arr + quick_sort(greater_arr)
내부 노드들은 모두 2개의 자식
을 가지는 트리