<每日一题>题目27:插入排序(假)

‘‘‘
    插入排序:假设元素左侧全部有序,找到自己的位置插入
‘‘‘
import random
import cProfile

def insert_sort(nums):
    for i in range(1,len(nums)):
        for j in range(i,0,-1):
            if nums[j-1] > nums[j]:
                nums[j-1],nums[j] = nums[j],nums[j-1]

    return nums

nums = [random.randint(0, 10000) for i in range(10000)]
print(insert_sort(nums))
cProfile.run(‘insert_sort(nums)‘)

  运行结果

排序:略

运行时间:5.247秒(不太真实,按道理插入排序应该跟选择排序运行时间差不多,可能实现方法有问题,暂时命名为插入排序(假))

插入排序2.0

def insert_sort(nums):
    for i in range(1,len(nums)):
        for j in range(i,0,-1):
            if nums[j-1] <= nums[j]:
                break
            elif nums[j-1] > nums[j]:
                nums[j-1],nums[j] = nums[j],nums[j-1]

    return nums

  疑惑:只是加了个break,cprofile.run()测的运行时间就不正常了

运行时间:0.05.但是自己实际感觉还是有4秒左右,估计是我cprofile没学好,学好再来改

原文地址:https://www.cnblogs.com/shuimohei/p/10381395.html

时间: 2024-10-10 00:15:57

<每日一题>题目27:插入排序(假)的相关文章

&lt;每日一题&gt;题目28:生成随机的测验试卷(单选题)

#项目:生成随机的测验试卷文件 import random #资料库 capitals = {'北京市':'京','上海市':'沪','天津市':'津','重庆市':'渝','河北省':'冀','山西省':'晋','辽宁省':'辽','黑龙江省':'黑','吉林省':'吉','江苏省':'苏','浙江省':'浙','安徽省':'皖','福建省':'闽','江西省':'赣','山东省':'鲁','河南省':'豫','湖北省':'鄂','湖南省':'湘','广东省':'粤','海南省':'琼','四

&lt;每日一题&gt;题目2:编写装饰器,为多个函数加上认证功能(用户账号和密码来源于文件)

这里做个最简单的账号密码验证,主要为了实现装饰器同时对多个函数起作用 1 FLAG = False #加一个变量防止多次登录验证 2 def wrapper(f): 3 def inner(*args,**kwargs): 4 '''登录程序''' 5 global FLAG #将FLAG变量设置成全局变量 6 if FLAG: 7 ret = f(*args, **kwargs) 8 return ret 9 else: 10 username = input('username:') 11

&lt;每日一题&gt;题目1:简单的注册和登录1.0

#版本1.0,最基本的注册登录'''1.注册,将账号和密码分别写在不同的文档里面2.登录,分别从账户文档和密码文档进行读取并登录''' 1 #注册 2 Identity = input("请输入您想要注册的账号:") 3 Password = input("请输入您想要注册的密码:") 4 print("恭喜您注册成功") 5 with open('id_ZC',mode='w',encoding='utf-8') as f1,open('pw_

&lt;每日一题&gt;题目16:简单的python练习题(1-10)

#1.python程序中__name__的作用是什么? __name__这个系统变量用来表示程序的运行方式. 如果程序在当前膜快运行,__name__的名称就是__main__, 如果不在(被调用),则显示为导入模块的名称. 扩展:常常这样写if __name__ == "__main__":来表名这是整个工程开始运行的入口. 效果:如果直接从这个文件执行,if为Turn,可以运行if后面的程序 如果被调用,if为False,不执行if后面的程序 #2.表达式int('11111',2

&lt;每日一题&gt;题目17:super()继承相关的面试题

class A(object): def go(self): print("go A go!") def stop(self): print("stop A stop!") def pause(self): raise Exception("Not Implemented") class B(A): def go(self): super().go() print( "go B go!") class C(A): def go

&lt;每日一题&gt;题目24:冒泡排序

''' 冒泡排序:比较相邻元素,顺序错误就交换顺序 ''' import random import cProfile def bubble_Sort(nums): for i in range(len(nums)-1): for j in range(i+1,len(nums)): if nums[i] > nums[j]: # max = nums[i] # nums[i] = nums[j] # nums[j] = max #python有更好的写法 nums[i],nums[j] = n

&lt;每日一题&gt;题目26:选择排序(冒泡排序改进版)

''' 选择排序:选择最小的,以此类推 ''' import random import cProfile def select_Sort(nums): for i in range(len(nums)-1): for j in range(i+1,len(nums)): if nums[i] > nums[j]: # max = nums[i] # nums[i] = nums[j] # nums[j] = max #python有更好的写法 nums[i],nums[j] = nums[j]

&lt;每日一题&gt;题目28:简单的python练习题(51-60)

#51.一行代码实现1-100的和 sum(range(1,101)) #52.如何在一个函数内部修改全局变量 ''' 利用global ''' #53.字典如何删除和合并2个字典 ''' del dic['name'] #删除 dic.update(dic2) #合并 ''' #54.谈下python的GIL ''' 全局解释器锁,同一进程中多线程同时只有一个线程能霸占python解释器(加了GIL),其他线程无法进行,该线程结束后才能运行. 多进程可以有多个python解释器,可以实现多个进

&lt;每日一题&gt;题目29:五个数字能组成多少互不重复的四位数

#有五个数字:1.2.3.4.5,能组成多少个互不相同且无重复数字的四位数?各是多少? e =[] for a in range(1,6): for b in range(1,6): for c in range(1,6): for d in range(1,6): if a!=b and a!=c and a!=d and b!=c and b!=d and c!=d: e.append(str(a)+str(b)+str(c)+str(d)) print("组成数量:%d" %le