冒泡排序
def bubbleSort(li):
for i in range(len(li) - 1):
for j in range(len(li) - i - 1):
if li[j] > li[j + 1]:
li[j], li[j + 1] = li[j + 1], li[j]
li = [345, 456, 68.435, 1, 6, 4, 568, ]
bubbleSort(li)
print(li)
选择排序
def selectSort(li):
for i in range(len(li) - 1):
min = I # 选择一个小的来比较
for j in range(i + 1, len(li)):
if li[min] > li[j]:
li[min], li[j] = li[j], li[min]
li = [345, 456, 68.435, 1, 6, 4, 568, ]
selectSort(li)
print(li)
插入排序
def insertSort(li):
for i in range(len(li) - 1):
temp = li[i]
j = i - 1
while j >= 0 and li[j] > temp:
li[j + 1] = li[j]
j = j - 1
li[j + 1] = temp
li = [345, 456, 68.435, 1, 6, 4, 568, ]
insertSort(li)
print(li)
快速排序
# 二分左右
def partition(list_for_partition, left, right):
# 中轴点
pivot = list_for_partition[left]
while left < right:
while left < right and list_for_partition[right] >= pivot:
right -= 1
list_for_partition[left] = list_for_partition[right]
while left < right and list_for_partition[left] <= pivot:
left += 1
list_for_partition[right] = list_for_partition[left]
list_for_partition[left] = pivot
return left
# 快速排序
def sort_quickly(list_for_partition, left, right):
if left < right:
pivot = partition(list_for_partition, left, right)
sort_quickly(list_for_partition, left, pivot - 1)
sort_quickly(list_for_partition, pivot + 1, right)
return list_for_partition
# 输出结果
def output_sort_result(list_for_partition):
return sort_quickly(list_for_partition, 0, len(list_for_partition) - 1)
堆排序
def heap_sort(array):
def heap_adjust(parent):
child = 2 * parent + 1 # left child
while child < len(heap):
if child + 1 < len(heap):
if heap[child + 1] > heap[child]:
child += 1 # right child
if heap[parent] >= heap[child]:
break
heap[parent], heap[child] = \
heap[child], heap[parent]
parent, child = child, 2 * child + 1
heap, array = array.copy(), []
for i in range(len(heap) // 2, -1, -1):
heap_adjust(i)
while len(heap) != 0:
heap[0], heap[-1] = heap[-1], heap[0]
array.insert(0, heap.pop())
heap_adjust(0)
return array
顺序查找
二分查找