如何使用Python中的函数实现简单排序算法
发布时间:2023-05-20 00:49:14
排序算法是计算机科学中的一个基本概念,是将数据元素按照一定规则排列成有序序列的算法。常用的排序算法有冒泡排序、插入排序、选择排序、快速排序等。本文将介绍如何使用Python编写这些简单的排序算法。
冒泡排序
冒泡排序是一种简单直观的排序算法。它重复地走访过需要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。
以下是使用Python实现冒泡排序算法的代码:
def bubbleSort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1] :
arr[j], arr[j+1] = arr[j+1], arr[j]
arr = [64, 34, 25, 12, 22, 11, 90]
bubbleSort(arr)
print ("排序后的数组:")
for i in range(len(arr)):
print ("%d" %arr[i])
插入排序
插入排序的基本思想是:每次将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。
以下是使用Python实现插入排序算法的代码:
def insertionSort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i-1
while j >=0 and key < arr[j] :
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key
arr = [12, 11, 13, 5, 6]
insertionSort(arr)
print ("排序后的数组:")
for i in range(len(arr)):
print ("%d" %arr[i])
选择排序
选择排序算法是简单选择排序,它的基本思想是:首先在未排序的序列中找到最小(大)元素,然后将其存放到序列的起始位置,接着,再从剩余的未排序元素中继续寻找最小(大)元素,然后将其存放到已排序序列的末尾。以此类推,直到全部元素均排序完毕。
以下是使用Python实现选择排序算法的代码:
def selectionSort(arr):
for i in range(len(arr)):
min_idx = i
for j in range(i+1, len(arr)):
if arr[min_idx] > arr[j]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
arr = [64, 25, 12, 22, 11]
selectionSort(arr)
print ("排序后的数组:")
for i in range(len(arr)):
print ("%d" %arr[i])
快速排序
快速排序是一种分治思想的排序算法,它的基本思想是:从数列中挑出一个元素,称为“基准”(pivot),然后将所有小于基准值的元素放置在基准值的左边,所有大于基准值的元素放置在基准值的右边,然后将左右两个部分分别递归进行快速排序。
以下是使用Python实现快速排序算法的代码:
def quickSort(arr,low,high):
if low < high:
pivot_index = partition(arr,low,high)
quickSort(arr, low, pivot_index-1)
quickSort(arr, pivot_index+1, high)
def partition(arr,low,high):
i = low-1
pivot = arr[high]
for j in range(low , high):
if arr[j] <= pivot:
i = i+1
arr[i],arr[j] = arr[j],arr[i]
arr[i+1],arr[high] = arr[high],arr[i+1]
return i+1
arr = [10, 7, 8, 9, 1, 5]
n = len(arr)
quickSort(arr,0,n-1)
print ("排序后的数组:")
for i in range(len(arr)):
print ("%d" %arr[i])
这些排序算法虽然简单,但在实际工作中具有广泛应用。Python具有简洁、易读的语法,使用Python编写排序算法可以提高程序员的编程效率。
