数据结构(python语言描述)--基础排序算法

本文深入讲解了三种Python排序算法:选择排序、冒泡排序和插入排序。每种算法都通过具体的Python函数实现,并详细解释了其工作原理和过程。虽然这三种方法都能实现排序功能,但在效率上并不理想,它们在最坏情况和平均情况下的性能均为O(n^2)。

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

每个python排序函数都是在整数的一个列表上进行操作的,并且都会用一个swap函数来交换列表中两项的位置。

def swap(lyst, i ,j):
    temp = lyst[i]
    lyst[i] = lyst[j]
    lyst[j] = temp

exchange the items at the positions i and j.

选择排序

排序最简单的策略就是搜索整个列表,找到最小项的位置。如果不在列表的第一位,算法就交换此项和第一项的位置。然后,算法回到第二个位置并且重复这个过程。当算法到达最后一项时,列表就是排序好的了。这个算法就叫做selection sort。

def ss(lyst):
    i = 0
    while i < len(lyst) - 1:
        minIndex = i
        j = i + 1
        while j < len(lyst):
            if lyst[j] < lyst[minIbdex]:
                minIndex = j
            j += 1
        if minIndex != i:
            swap(lyst, minIndex, i)
        i += 1

嵌套循环,i,j表示position。例:i=0. j=1
j小于list长度时,从列表第二项先与第一项(minIndex)比较大小,最小项与下一项比较,直到最后一项
然后从第二项重新开始循环。

冒泡排序

从列表开头处开始,并且比较一对数据项,直到移动到列表的末尾。每当成对的两项之间的顺序不正确的时候,算法就交换其位置。这个过程可以将最大项以冒泡的方式排到最后一项。然后,算法从第二项重复,直到该算法从最后一项开始执行,此时,列表是排序好了的。

def bs(lyst):
    n = len(lyst):
    while n > 1:
        i = 1
        while i < n:
            if lyst[i] < lyst[i-1]:
                swap(lyst, i , i-1)
            i += 1
        n -= 1
插入排序

策略:

  • 在第 i 轮通过列表的时候,第 i 个项应该插入到列表的前 i 个项之中的正确位置。
  • 在第 i 轮之后,前 i 个项应该是排好序的。
  • 类似我们排列手中的扑克牌,我们按顺序放好了抓到的 i-1 张牌,那么抓取的第 i 张牌,与手中的这些牌比较,直到找到合适的位置
  • 插入排序包含两个循环。外围的循环遍历从1到 n-1 的位置。对于这个循环中的每一个位置 i ,我们都保存该项并且从位置 i-1 开始内部循环。对于这个循环中的每一个位置 j, 我们都将项移动到位置 j+1,直到找到了给保存的项(第 i 项)的插入位置。
def is(lyst):
    i = 1
    while i < len(lyst):
        itemtoinsert = lyst[i]
        j = i - 1
        while j >= 0:
            if itemtoinsert < lyst[j]:
                lyst[j+1] = lyst[j]
                j -= 1
            else:
                break
        lyst[j+1] = itemtoinsert
        i += 1

以上三种方法都可以实现排序,但是效率都不高。在最坏情况和平均情况下,性能都是O(n2).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值