选择排序&快速排序示例

本文深入探讨了两种经典排序算法——选择排序和快速排序的Python实现。选择排序通过反复查找最小元素并将其放置在正确位置来排序数组,而快速排序则采用分治策略,通过选择基准值将数组分为两部分并递归地排序。本文提供了详细的代码示例和算法复杂度分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,选择排序简单示例(python实现)

def findSmallest(arr):
    smallest = arr[0]
    smallest_index = 0
    for i in range(1,len(arr)):
        if arr[i] < smallest:
            smallest = arr[i]
            smallest_index = i
    return smallest_index    
#sort the array
def selectSort(arr):
    newArr = []
    for i in range(1,len(arr)):
        smallest_index = findSmallest(arr)
        newArr.append(arr.pop(smallest_index))#删去原始序列中的最小值并添加进入newArr
    return newArr                      
arr = [1,6,8,3,2,5,10]
print(selectSort(arr))

注:选择排序需要一遍又一遍的检查原始序列元素,检查次数依次为n,n-1,…,1。完成排序时检车总次数为(1+n)*n/2,算法复杂度为O(n^2)

2,快速排序简单示例(python实现)

def quicksort(array):
    if len(array) < 2:
        return array
    else:
        pivot = array[0] #pivot为基准值,中文为枢纽的意思
        less = []
        greater = []
        for i in array[1:]:
            if i <= pivot:
                less += [i]
            else:
                greater += [i]
    return quicksort(less) + [pivot] + quicksort(greater)
arr = [1,9,5,3,7]
print(quicksort(arr))
def quicksort(array):
    if len(array) < 2:
        return array
    else:
        pivot = array[0] #pivot为基准值,中文为枢纽的意思
        less = [i for i in array[1:] if i <= pivot]
        greater = [i for i in array[1:] if i > pivot]
    return quicksort(less) + [pivot] + quicksort(greater)
arr = [1,9,5,3,7]
print(quicksort(arr))

注:快速排序需要先随机选取一个基准值pivot,然后通过这个值将数列分为两个部分,再分别对两部分采用相同的方式进行迭代排序,分而治之(divide and conquer)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值