算法是计算机科学的核心之一,它描述了如何解决特定问题或执行特定任务。以下是一些有趣的算法及Python示例:
- 快速排序(Quick Sort)
快速排序是一种分治算法,它将一个数组分成两个子数组,然后递归地对这两个子数组进行排序。以下是一个Python示例:
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
print(quick_sort([3,6,8,10,1,2,1]))
- 归并排序(Merge Sort)
归并排序也是一种分治算法,它将一个数组分成两个子数组,然后递归地对这两个子数组进行排序,最后将这两个已排序的子数组合并成一个已排序的数组。以下是一个Python示例:
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = arr[:mid]
right = arr[mid:]
left = merge_sort(left)
right = merge_sort(right)
return merge(left, right)
def merge(left, right):
result = []
i = j = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result += left[i:]
result += right[j:]
return result
print(merge_sort([3,6,8,10,1,2,1]))
- 二分搜索(Binary Search)
二分搜索是一种在已排序的数组中查找特定元素的算法。它采用分治策略,在每一步将搜索空间减半。以下是一个Python示例:
def binary_search(arr, x):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] < x:
low = mid + 1
elif arr[mid] > x:
high = mid - 1
else