文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python排序算法(一)

2023-01-31 05:17

关注

   接触python这么些日子下来,感触最深的就是有的知识是相通的,是无论编程语言的,比如说算法O(∩_∩)O~。So,今天开始用python再把之前学过的排序算法重写一遍,权当复习提升吧。

   第一个是冒泡排序:

def bubble(x):
    counter=0
    n=len(x)
    for i in range(n):
        for j in range(i,n-1):
            counter+=1
            if x[j]>x[j+1]:
                t=x[j]
                x[j]=x[j+1]
                x[j+1]=t
    return counter
x=[1,3,9,7,12,23,4,16,20]
counter=bubble(x)
for a in x:
    print(a)
print('times:'+str(counter))

   为了比较几种算法的复杂度,我把它们的循环次数也输出出来了。

   冒泡排序的原理就是通过一个个比较来得到各个排位的数,比较容易懂,但是复杂度也是最高的。这里counter输出是36。

   第二个是插入排序:

   

def insert(x,key,i):
    counter=0
    while (i>=0 and key<x[i]):
        x[i+1]=x[i]
        i-=1
        counter+=1
    x[i+1]=key
    return counter
def InsertionSort(x,n):
    counter=0
    for j in range(1,n):
        counter+=1
        counter+=insert(x,x[j],j-1)
    return counter
x=[1,3,9,7,12,23,4,16,20]
counter=InsertionSort(x,len(x))
for a in x:
    print(a)
print('times:'+str(counter))

   insert函数是确保一个数通过与一个已经排好序的序列比较能知道自己所处的位置并正确插入。InsertionSort则是不停传入这个排好序的序列的参数调用insert函数,从初始的只有一个数,每次逐渐加一个数,但是加一个数就要确保它能在排好序的序列中处于正确的位置。所以这也是它取名插入排序的原因啦~~

   这里counter输出的结果是15,明显比冒泡排序提升了一个档次啊

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯