排序算法(Python实现)
2019-03-15·Algorithm, Sorting, Python
冒泡排序
def bubbleSort(arr):
l = len(arr)
for i in range(l - 1):
for j in range(l - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
快速排序
def quickSort(arr, left, right):
if left >= right:
return
partitionIndex = partition(arr, left, right)
quickSort(arr, left, partitionIndex - 1)
quickSort(arr, partitionIndex, right)
return arr
def partition(arr, left, right):
pivot = arr[right]
i = left
for j in range(left, right):
if arr[j] < pivot:
arr[i], arr[j] = arr[j], arr[i]
i += 1
arr[i], arr[right] = arr[right], arr[i]
return i
归并排序
def merge(arr, left, right):
result = []
mid = (left + right) >> 1
leftIndex, rightIndex = left, mid + 1
while leftIndex <= mid and rightIndex <= right:
if arr[leftIndex] < arr[rightIndex]:
result.append(arr[leftIndex])
leftIndex += 1
else:
result.append(arr[rightIndex])
rightIndex += 1
while leftIndex <= mid:
result.append(arr[leftIndex])
leftIndex += 1
while rightIndex <= right:
result.append(arr[rightIndex])
rightIndex += 1
for i in range(left, right + 1):
arr[i] = result[i - left]
def mergeSort(arr, left, right):
if left >= right:
return
mid = (left + right) // 2
mergeSort(arr, left, mid)
mergeSort(arr, mid + 1, right)
merge(arr, left, right)
return arr
#Algorithm#Sorting#Python