算法题总结1--排序篇

本文总结了六种基础排序算法,包括冒泡排序、选择排序、插入排序、快速排序、希尔排序和归并排序。详细介绍了每种排序算法的思想、优缺点以及时间复杂度,其中快排和选择排序是不稳定的,归并排序是稳定的排序算法。
摘要由CSDN通过智能技术生成

各种排序基础

1.冒泡

思想:相邻两个元素进行比较,然后把较大的放在后面,一轮比较结束后,最大的元素被放在最后面。整个 过程就像鱼儿吐泡泡一样,两两进行比较,大的元素向后沉。

#冒泡排序
def bubble_sort(list):
    for i in range(len(list)):
        #i代表需要比较多少轮
        for j in range(len(list)-i-1):
            #j代表该轮需要比较的次数
            if list[j]>list[j+1]:
                tmp=list[j+1]
                list[j+1]=list[j]
                list[j]=tmp
    return list


if __name__=='__main__':
    list1=[3,2,8,6,7]
    print(bubble_sort(list1))

总结:在比较过程中,相等的元素不会交换位置,所以是稳定排序。最好的时间复杂度是O(n),最坏的时间复杂度是O(n^2), 平均时间复杂度是O(n^2)

2.选择

思路:第一轮,每个元素都和第一个元素进行比较,如果比它小,则进行交换,找到整个序列中最小的元素。第二轮,则是每个元素都和第二个元素进行比较,如果比它小,则进行交换,找到整个序列中第二小的元素,以此类推。

#选择排序
def selection_sort(list):
    for i in range(len(list)):
        min_index=i
        for j in range(i+1,len(list)):
            if list[ min_index]>list[j]:
                tmp
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值