python算法-8种排序

一、冒泡排序

  1. 算法说明
    (1)比较相邻的元素,如果第一个比第二个大,就进行交换;
    (2)对每一对乡里元做同样操作,直到最后一对,最后的元素应该是最大的数;
    (3)循环步骤(1)(2)直到每一任何一对数字需要比较。
  2. 代码:
# 冒泡排序
def bubble_sort(listx):
    xlen = len(listx)   # 列表长度
    for i in range(xlen-1):
        for j in range(xlen-1-i):
            if listx[j]>listx[j+1]: # 前一个数值和后一个数值进行比较
                listx[j], listx[j+1] = listx[j+1], listx[j]
    return listx

if __name__ == "__main__":
    L = [34,123,12,34,545]
    print(bubble_sort(L))

执行结果:
[12, 34, 34, 123, 545]

二、插入排序

  1. 算法说明
    插入排序算法是基于某序列已经有序排列的情况下,通过一次插入一个元素的方式按照原有排序方式增加元素。这种比较是从该有序序列的最末端开始执行,即要插入序列中的元素最先和有序序列中最大的元素比较,若其大于该最大元素,则可直接插入最大元素的后面即可,否则再向前一位比较查找直至找到应该插入的位置为止。插入排序的基本思想是,每次将1个待排序的记录按其关键字大小插入到前面已经排好序的子序列中,寻找最适当的位置,直至全部记录插入完毕。执行过程中,若遇到和插入元素相等的位置,则将要插人的元素放在该相等元素的后面,因此插入该元素后并未改变原序列的前后顺序。

简单理解:

将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数。即:序列的第一个元素,肯定是有序的,把第二个元素和第一个元素相比,插入到合适的位置,这样前两个元素就有序了,接着,把第三个元素插入到前面包含两个元素的有序列表中,以此类推,直至插完第n个数据。
2. 代码:

# 插入排序
def insertSort(listx):
    xlen = len(listx)
    for i in range(1, xlen):
        j = i - 1
        # 把listx[i]和前面的元素逐一进行比较
        while j>=0:
            # 当第二个数小于前一个数时,插入到合适的位置
            if listx[j]>listx[j+1]:
                listx[j], listx[j+1] = listx[j+1], listx[j]
            j -= 1
    return listx

if __name__ == '__main__':
print(insertSort([77,45,34,3,454]))

执行结果:
[3, 34, 45, 77, 454]

执行时数据的交换过程:
45与77交换位置后列表:[45, 77, 34, 3, 454]
34与77交换位置后列表:[45, 34, 77, 3, 454]
34与45交换位置后列表:[34, 45, 77, 3, 454]
3与77交换位置后列表:[34, 45, 3, 77, 454]
3与45交换位置后列表:[34, 3, 45, 77, 454]
3与34交换位置后列表:
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值