LOW逼三人组(一)----冒泡算法

news/2024/8/26 17:40:26

排序

 1、冒泡排序

冒泡算法

import random         # 随机模块
def bubble_sort(li):  ###################################冒泡排序#####################################
    for i in range(len(li)-1):   #  多少趟
        for j in range(len(li)-i-1):  #一趟里多少次
            if li[j]>li[j+1]:  # 升序排列    " < " 为降序排列
                li[j],li[j+1]=li[j+1],li[j]  # 互换数
data=list(range(1000))   # 1000个数
random.shuffle(data)     # 打乱这个序列
bubble_sort(data)        # 将打乱后的序列传送到冒泡算法函数
print(data)              # 打印排序后的序列

打印后的效果为:

``````````````````````

 改进后的冒泡算法:

import random
def bubble_sort_1(li):        # 上个算法的改进,用于极端情况,例如已经拍好的序列
    for i in range(len(li)-1):
        exchange=False        
        for j in range(len(li)-i-1):
            if li[j]>li[j+1]:
                li[j],li[j+1]=li[j+1],li[j]
                exchange=True
        if not exchange:     # 如果没有交换就直接退出
            break
data=list(range(1000))
random.shuffle(data)
bubble_sort_1(data)
print(data)

改进前和改进后的冒泡算法进行对比:

import random         # 随机模块
import time

def cal_time(func):            # 装饰器 ,用来检测算法所执行的时间
    def wrapper(*args,**kwargs):
        t1=time.time()
        result=func(*args,**kwargs)
        t2=time.time()
        print("%s running time: %s secs." %(func.__name__,t2-t1))
        return result
    return wrapper

@cal_time
def bubble_sort(li):  ###################################冒泡排序#####################################
    for i in range(len(li)-1):   #  多少趟
        for j in range(len(li)-i-1):  #一趟里多少次
            if li[j]>li[j+1]:  # 升序排列    " < " 为降序排列
                li[j],li[j+1]=li[j+1],li[j]  # 互换数
# data=list(range(1000))   # 1000个数
# random.shuffle(data)     # 打乱这个序列
# bubble_sort(data)        # 将打乱后的序列传送到冒泡算法函数
# print(data)              # 打印排序后的序列

@cal_time
def bubble_sort_1(li):        # 上个算法的改进,用于极端情况,例如已经拍好的序列
    for i in range(len(li)-1):
        exchange=False
        for j in range(len(li)-i-1):
            if li[j]>li[j+1]:
                li[j],li[j+1]=li[j+1],li[j]
                exchange=True
        if not exchange:
            break
data=list(range(1000))
random.shuffle(data)
bubble_sort(data)
bubble_sort_1(data)
print(data)
View Code

打印后的效果为

``````````````````````

 

转载于:https://www.cnblogs.com/zhuifeng-mayi/p/9209722.html


http://www.niftyadmin.cn/n/2752947.html

相关文章

浏览器输入URL回车会发生什么

这是一个非常经典的面试题,这道题没有具体的答案,它涉及很多的知识点&#xff0c;面试官会通过这道题了解你对哪一方面的知识比较擅长&#xff0c; 然后继续追问看看你的掌握程度。当然我写的这些也只是我的一些简单的理解&#xff0c;从前端的角度出发&#xff0c;我觉得首先回…

Redis:WRONGTYPE Operation against a key holding the wrong kind of value

错误信息 redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key holding the wrong kind of value分析 当前程序中key的操作类型&#xff0c;并不与redis库中存在的key的类型相匹配。 举例&#xff1a; 第一次保存key&#xff0c;将其设…

epoll_wait会被系统中断唤醒

今天&#xff0c;当一个程序在epoll_wait阻塞时&#xff0c;用strace跟踪了一下&#xff0c;结果epoll_wait就被EINTR唤醒了&#xff0c;并且返回-1&#xff1b; 所以&#xff0c;当epoll_wait返回-1时&#xff0c;需要判断errno是不是EINTR&#xff0c;如果是&#xff0c;继续…

iOS开发常用代码块

遍历可变数组的同时删除数组元素 NSMutableArray *copyArray [NSMutableArray arrayWithArray:array]; NSString *str1 “zhangsan”; for (AddressPerson *perName in copyArray) { if ([[perName name] isEqualToString:str1]) { [array removeObject:perName]; } …

Redis 启动警告解决

警告 Increased maximum number of open files to 10032 (it was originally set to 1024).问题分析 这条警告是说&#xff1a;最大文件打开数不够。 解决方法一 如果是root用户&#xff0c;那么修改下 ulimit 就可以。 #查看系统限制 ulimit -a#设置“open files”数量 u…

JS事件类型有哪些?分别是什么?

JavaScript可以处理的事件类型为:鼠标类型、键盘类型和HTML类型! 注意:所有的事件处理函数都由两个部分组成, on事件名称。 例如:click事件,处理函数就是onclick 现在我们来看第一种 鼠标事件 click:单击鼠标按钮时触发 dblclick:当用户双击鼠标按钮时触发 mousedown :当…

php实现 字符个数统计

php实现 字符个数统计 一、总结 一句话总结&#xff1a; 1、php字符转ascii码函数&#xff1f; ord() 6 if(ord($input[$i]) < 128 and 0 < ord($input[$i]) and !in_array(ord($input[$i]),$AsciiSet)){ 2、判断数组中数值存在&#xff1f; in_array&#xff08;…

Linux Screen记录屏幕日志

screen是Linux窗口管理器&#xff0c;用户可以建立多个screen会话&#xff0c;每个screen会话又可以建立多个window窗口&#xff0c;每一个窗口就像一个可操作的真实的ssh终端一样。 下面介绍如何记录screen屏幕日志。 第一种方法 启动时添加选项-L&#xff08;Turn on outp…