欢迎访问宙启技术站
智能推送

如何使用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编写排序算法可以提高程序员的编程效率。