python——简单排序

一、冒泡排序

1.1 思路

每次比较两个数,如果前面比后面大,交换。最终最大的会到列表最后面

1.2 代码

#冒泡排序,n2
import random
def bubble_sort(list):
    for i in range(len(list)-1):
        for j in range(len(list)-i-1):
            if list[j]>list[j+1]:
                list[j],list[j+1]=list[j+1],list[j]

#随机生成10个数的列表,范围是0-100
list=[random.randint(0,100) for i in range(10)]
print(list)
#冒泡排序后的列表
bubble_sort(list)
print(list)

二、选择排序(改进前)

2.1 思路

每次找到最小的元素放在一个空列表后面,再把原列表中最小的元素删除

2.2 代码

#选择排序,n2
def select_sort(list):
    list_new=[]
    for i in range(len(list)):
        min_val=min(list)
        list_new.append(min_val)
        list.remove(min_val)
    return list_new

#随机生成10个数的列表,范围是0-100
list=[random.randint(0,100) for i in range(10)]
print(list)
print(select_sort(list))

2.3 弊端

新建一个列表,如果列表长度特别长。内存占用空间大。

min函数,remove函数时间复杂度都是n

三、选择排序(改进后)

3.1 思路

改进后的选择排序,找到最小的元素和第一个位置的元素交换,再缩小查找范围

3.2 代码

#改进后的选择排序,n2
def modified_select_sort(list):
    for i in range(len(list)-1):
        min_ind=i
        for j in range(i+1,len(list)):
            if list[j]<list[min_ind]:
                min_ind=j
        list[i],list[min_ind]=list[min_ind],list[i]

#随机生成10个数的列表,范围是0-100
list=[random.randint(0,100) for i in range(10)]
print(list)
modified_select_sort(list)
print(list)

四、插入排序

4.1 思路

每次拿出列表的第一个元素,再找到合适位置放下。
比如53421,先拿出5.再拿出3比5大,把5往后移,3放在5前面。再拿出4,比5大比3小,5往后移,放3后面。。。。。

4.2 代码

#插入排序
def insert_sort(list):
    for i in range(1,len(list)):
        tem=list[i]
        j=i-1
        while j>=0 and list[j]>tem:
            list[j+1]=list[j]
            j-=1
        list[j+1]=tem
#随机生成10个数的列表,范围是0-100
list=[random.randint(0,100) for i in range(10)]
print(list)
insert_sort(list)
print(list)

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值