python 实现常见的排序算法(冒泡排序,选择排序,插入排序)

python 实现常见的排序算法(冒泡排序,选择排序,插入排序)

这几种排序方法非常简单,直接上代码:

冒泡排序

import random
import time
'''
    冒泡排序python实现
    基本实现原理:每一次遍历选出最大(最小)值
'''
# 自定义装饰器
def timer_count(f):
    def decor(*args,**kwargs):
        s_time = time.time()
        r = f(*args,**kwargs)
        e_time = time.time()
        print("{}函数耗时{}秒".format(f.__name__,e_time-s_time))
        return r
    return decor

l = [random.randint(0,30) for x in range(20)]

# 最普通冒泡排序,升序,数据随机
@timer_count
def bullle_way1(l):
    print('排序前',l)
    for i in range(len(l)-1):
        for j in range(i,len(l)):
            if l[i] > l[j]:
                t = l[i]
                l[i] = l[j]
                l[j] = t
    print('排序后',l)

# 对前方部分无序,到达某个值后有序的冒泡排序方法
@timer_count
def bullle_way2(l):
    print('排序前', l)
    for i in range(len(l)-1):
        for j in range(i,len(l)):
            onoff = True
            while onoff:
                onoff = False
                if l[i] > l[j]:
                    onoff = True
                    t = l[i]
                    l[i] = l[j]
                    l[j] = t
    print('排序后', l)


if __name__ == '__main__':
    bullle_way1(l)
    bullle_way2(l)

选择排序

#!/usr/bin/env python
# -*-coding:utf-8-*-
# @Time:2021/7/6 10:59
# @Author:ZhangFY
# @File:select_sort.py

import random
import time

'''
    选择排序 python 实现方法
    算法核心,类似于冒泡排序算法,每次从无序数据中选出一个最大(小)值,插入到前方有序队列中去
'''
# 自定义装饰器
def timer_count(f):
    def decor(*args,**kwargs):
        s_time = time.time()
        r = f(*args,**kwargs)
        e_time = time.time()
        print("{}函数耗时{}秒".format(f.__name__,e_time-s_time))
        return r
    return decor

def select_way1(l):
    print('排序前:',l)
    for i in range(len(l)-1):
        min = l[i]       # 每一轮循环的最小值
        index = i
        for j in range(i,len(l)):
            if l[j] < min:
                min = l[j]
                index = j
        l[i],l[index] = l[index],l[i]
    print("排序后:",l)


if __name__ == '__main__':
    l = [random.randint(10,100) for x in range(10)]
    select_way1(l)

插入排序

import random
import time
'''
    插入排序 python 实现过程
    算法核心,单个元素可认为是有序队列,插入过程为单个元素操作
'''
# 自定义装饰器
def timer_count(f):
    def decor(*args,**kwargs):
        s_time = time.time()
        r = f(*args,**kwargs)
        e_time = time.time()
        print("{}函数耗时{}秒".format(f.__name__,e_time-s_time))
        return r
    return decor

l = [random.randint(0,30) for x in range(20)]

# 普通插入排序
def insert_way1(l):
    print('排序前',l)
    for i in range(1,len(l)):   # 当前第一个元素可认为有序序列
        j = i
        x = l[i]       # 待插入的数值
        while j > 0 and l[j-1] > x:
            l[j] = l[j-1]
            j -= 1
        l[j] = x
    print('排序后',l)



if __name__ == '__main__':
    insert_way1(l)

初次写技术博客,目前肯定还存在很多不足之处,欢迎留言指正。:个人github地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值