Python 冒泡排序三种写法

  • 需求:输入 n 个整数并将这些数字以从大到小和从小到大的顺序输出
  • 代码如下:
  • bubble_sort_v1
     1 #coding:utf-8
     2 #__author__ = 'Diva'
     3 
     4 #  升序(从小到大)
     5 SORT_TYPE_ASC = 1
     6 #  降序(从大到小)
     7 SORT_TYPE_DESC = -1
     8 
     9 def swap(slist, ia, ib):
    10     tmp = slist[ia]
    11     slist[ia] = slist[ib]
    12     slist[ib] = tmp
    13 
    14 # 基本的冒泡排序
    15 def sort(sort_type, sort_list):
    16     i = 0
    17     size = len(sort_list)
    18     while i < size:
    19         j = 0
    20         while j < size - 1:
    21             if (sort_type == SORT_TYPE_ASC and sort_list[j] > sort_list[j + 1]) or (sort_type == SORT_TYPE_DESC and sort_list[j] < sort_list[j + 1]):
    22                 swap(sort_list, j, j + 1 )
    23             j += 1
    24         i += 1
    25 
    26 if __name__ == '__main__':
    27     mylist = [3, 5, 2, 1, 4]
    28     sort(SORT_TYPE_ASC, mylist)
    29     print('mylist sort as asc: %s' % (mylist))
    30     sort(SORT_TYPE_DESC, mylist)
    31     print('mylist sort as desc: %s' % (mylist))

 

  • bubble_sort_v2
     1 #coding:utf-8
     2 #__author__ = 'Diva'
     3 
     4 #  升序(从小到大)
     5 SORT_TYPE_ASC = 1
     6 #  降序(从大到小)
     7 SORT_TYPE_DESC = -1
     8 
     9 def swap(slist, ia, ib):
    10     tmp = slist[ia]
    11     slist[ia] = slist[ib]
    12     slist[ib] = tmp
    13 
    14 # 优化排序次数,每轮选出当前范围数组内的极值(最大,最小),并不断减少数组范围
    15 def sort_v2(sort_type, sort_list):
    16     i = 0
    17     size = len(sort_list)
    18     while i < size:
    19         t = i
    20         j = i + 1
    21         while j < size:
    22             if(sort_type == SORT_TYPE_ASC and sort_list[t] > sort_list[j]) or (sort_type == SORT_TYPE_DESC and sort_list[t] < sort_list[j]):
    23                 t = j
    24             j += 1
    25         if t != i:
    26             swap(sort_list, t, i)
    27         i += 1
    28 
    29 if __name__ == '__main__':
    30     mylist = [3, 5, 2, 1, 4]
    31     sort_v2(SORT_TYPE_ASC, mylist)
    32     print('mylist sort as asc: %s' % (mylist))
    33     sort_v2(SORT_TYPE_DESC, mylist)
    34     print('mylist sort as desc: %s' % (mylist))

 

  • bubble_sort_v3
     1 #coding:utf-8
     2 #__author__ = 'Diva'
     3 
     4 #  升序(从小到大)
     5 SORT_TYPE_ASC = 1
     6 #  降序(从大到小)
     7 SORT_TYPE_DESC = -1
     8 
     9 def swap(slist, ia, ib):
    10     tmp = slist[ia]
    11     slist[ia] = slist[ib]
    12     slist[ib] = tmp
    13 
    14 #  再次简化判断条件
    15 def sort_v3(sort_type, sort_list):
    16     i = 0
    17     size = len(sort_list)
    18     while i < size:
    19         t = i
    20         j = i + 1
    21         while j < size:
    22             #if(sort_type == SORT_TYPE_ASC and sort_list[t] > sort_list[j]) or (sort_type == SORT_TYPE_DESC and sort_list[t] < sort_list[j]):
    23             if (sort_list[t] - sort_list[j]) * sort_type > 0:
    24                 t = j
    25             j += 1
    26         if t != i:
    27             swap(sort_list, t, i)
    28         i += 1
    29 
    30 if __name__ == '__main__':
    31     mylist = [3, 5, 2, 1, 4]
    32     sort_v3(SORT_TYPE_ASC, mylist)
    33     print('mylist sort as asc: %s' % (mylist))
    34     sort_v3(SORT_TYPE_DESC, mylist)
    35     print('mylist sort as desc: %s' % (mylist))

     

  • 测试结果:
  •  

转载于:https://www.cnblogs.com/divablogs/p/7510911.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/369327.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ptmalloc内存分配和回收详解(文字版)

ptmalloc内存分配和回收详解&#xff08;文字版&#xff09; 进程默认内存布局&#xff08;x86&#xff09; 从进程的内存布局可知&#xff0c;.bss段之上的这块分配给用户程序的空间被称之为heap&#xff0c;start_brk指向heap的开始&#xff0c;而brk指向heap的顶部。可以使用…

linux nfs

linux&#xff08;十四&#xff09;之linux NFS服务管理学到这里差不多就结束了linux的基础学习了&#xff0c;其实linux的内容并不难&#xff0c;我们要经常的反复的去操作它&#xff0c;多多和它去联络感情才能很好的掌握这个linux。 加油&#xff01;今天是星期二。没有什么…

下来安成功 打开一直白屏_推广人透露:戈洛夫金2021年可能与安德拉德上演拳王统一战...

IBF中量级拳王根纳季-戈洛夫金(Gennadiy Golovkin)随着本月摧毁强制挑战者卡米尔-塞泽梅塔(Kamil Szeremeta)&#xff0c;使得下一场比赛在对手选择问题上&#xff0c;具有很大的自由度。戈洛夫金的推广人埃迪-赫恩做客Sirius XM访谈时&#xff0c;透露了一个重要消息&#xff…

WEB接口测试之Jmeter接口测试自动化 (四)

Jmeter是压力测试、接口测试工具&#xff0c;Ant是基于Java的构建工具&#xff0c;具有跨平台的作用&#xff0c;jenkins是持续集成工具。将这三者结合起来可以搭建一套webservice接口测试的持续构建环境。 1、安装JDK&#xff0c;配置java环境变量&#xff08;略过&#xff09…

dnf机器人猜数字奖励_DNF:周年庆策划啪啪打脸,工作人员也出错误,难道又是临时工的锅?...

本来应该是很喜庆的一天&#xff0c;结果又遇见了策划啪啪打脸的事情&#xff0c;关键还连累玩家提心吊胆的。往年都是登录游戏送豪礼&#xff0c;今年策划就像搞点不一样&#xff0c;估计是认为今年送的“即时”史诗比较多吧。然后就很任性的在领取豪礼之前添加了一道“礼物申…

练习 3.16

如题&#xff1a;下面是某大学数据库的一组需求&#xff0c;此数据库用于记录学生的成绩&#xff0c;这与图1.2所示数据库类似&#xff0c;但并不完全相同。 a. 大学要记录每个学生的姓名、学号、社会保险号、当前地址与电话、永久地址与电话、出生日期、性别、年级&#xff08…

中国连计算机硬盘都无法生产吗,中国仍无能力制造出电脑中的硬盘

从最开始的40GB到现在的3TB甚至更大&#xff0c;硬盘技术已经发生了突飞猛进的发展&#xff0c;就连以往高高在上的SSD固态硬盘也从去年开始展现出大容量普及的趋势。但是&#xff0c;至今为止我们为何没有看到一款国产品牌的硬盘杀入市场呢&#xff1f;今日头条中一篇文章或许…

d3 i5 神舟精盾k480n_6款神舟精盾轻薄记本发布,10nm十代酷睿,匠心打造国潮好本...

神舟电脑新品&#xff1a;神舟精盾发布会已于2019年10月31日上午在深圳神舟电脑大厦招开&#xff0c;此次发布会一共发布了6款精盾系列的轻薄笔记本。 此次还有英特尔、英伟达、微软等重量级合作伙伴的大咖站台助力&#xff0c;神舟电脑产品总监王小陈先生、神舟电脑创新一部销…

css中border制作各种形状

css利用border制作各种形状的原理如图&#xff1a; 使用border绘制三角形是什么原理&#xff1f;事实上&#xff0c;宽度相等的border是以45度对接的&#xff0c;如下图: 没有了上border如图所示&#xff1a; 再设置border的宽度为0&#xff1a; 设置border的高度为0&#xff…

2016 linux发行版排行_选择困难症必看!云服务器如何选择操作系统,Windows和Linux哪个更好?...

在购买云服务器时&#xff0c;会有一个必选的配置&#xff0c;就是操作系统的选择&#xff0c;如何选择操作系统&#xff1f;操作系统选择错了怎么办&#xff1f;这是不少用户会遇到的问题&#xff0c;今天我们就来教大家如何选择操作系统&#xff0c;以及操作系统选择错了&…

怎样不通过高考进入清华计算机系,山东高考状元孟令昊澄清,没有参加政审,已经填报清华计算机系!...

原标题&#xff1a;山东高考状元孟令昊澄清&#xff0c;没有参加政审&#xff0c;已经填报清华计算机系&#xff01;说到高考状元&#xff0c;其实每年在高考分数公布以后和志愿填报的时候&#xff0c;他们都是大家最为关注的群体&#xff0c;特别是对于这些状元的去向成为了很…

DOM BOM document window 区别

DOM 是为了操作文档出现的 API&#xff0c;document 是其的一个对象&#xff1b; BOM 是为了操作浏览器出现的 API&#xff0c;window 是其的一个对象。 使用下图讲解&#xff1a; 归DOM管的&#xff1a; E区&#xff1a;即document 归BOM管的&#xff1a; A区&#xff1a;浏览…

D2

依托 Weex 的能力&#xff0c;轻舟平台使得前端开发人员可以基于 Vue 或者 Rax&#xff08;类 React&#xff09;开发媲美原生的 App。 不需要学习各类 Native 开发语言&#xff1b;不需要搭建复杂的编译打包环境&#xff0c;轻舟提供的一站式集成开发解决方案全部帮你搞定。吴…

hibernate5--主键生成策略

1、hibernate自己维护主键的值。首先获取该表中最大主键值&#xff0c;然后加一插入。主键字段对应的属性类型可以是int、short、long以及其封装类型。在高并发或者集群的情况下不能使用。 2、identity&#xff1a;使用数据库自身自增长来维护。 <id name"id" col…

vue watch 第一次不执行_Vue 实现前进刷新,后退不刷新的效果

https://github.com/woai3c/Front-end-articles​github.com需求一&#xff1a;在一个列表页中&#xff0c;第一次进入的时候&#xff0c;请求获取数据。点击某个列表项&#xff0c;跳到详情页&#xff0c;再从详情页后退回到列表页时&#xff0c;不刷新。也就是说从其他页面进…

win8计算机安全模式,安全模式,详细教您Win8怎么进入安全模式

电脑的用途在我们的日常生活之中体现的是最为突出了&#xff0c;比方说网上购物、看电视、玩游戏、做文件什么的都用得着电脑。但是有用户遇到了Win8系统按F8无法进入安全模式怎么办&#xff1f;非也&#xff0c;非也&#xff0c;下面&#xff0c;小编给大家带来了Win8进入安全…

elasticsearch-6.0.1安装

elasticsearch-6.0.1安装 0. 介绍&#xff1a;ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#xff1b;是目前全文搜索引擎的首选。Elastic 的底层是开源库 Lucene。但是&#xff0c;没法直接用 Lucene&#xff0c;必须自己写代码…

使用GlassFish 4.0测试驱动Java API以处理JSON

编写规范并为其做出贡献是一回事。 如果您想提供宝贵的反馈意见&#xff0c;请使用它并研究真实的示例。 最新推广的GlassFish构建包含重命名为4.0&#xff0c;我认为现在是对Java处理JSON&#xff08;JSON-P&#xff09;API进行测试的好时机。 获取启用了Java EE 7的GlassFis…

查询已有链表的hashmap_原创 | 面试不再慌,看完这篇保证让你写HashMap跟玩一样...

点击上方蓝色小字&#xff0c;关注“码农小黑屋”重磅干货&#xff0c;第一时间送达今天这篇文章给大家讲讲hashmap&#xff0c;这个号称是所有Java工程师都会的数据结构。为什么说是所有Java工程师都会呢&#xff0c;因为很简单&#xff0c;他们不会这个找不到工作。几乎所有面…

华为p40手机自带计算机,华为p40pro支持PC模式吗_华为p40pro能连接至电脑模式吗

华为p40pro支持PC模式吗&#xff1f;华为p40pro能连接至电脑模式吗&#xff1f;从前几年开始&#xff0c;就有部分华为手机可以支持PC模式了。这个模式在出差的时候还是很实用的&#xff0c;可以直接将手机上的内容投屏到投影仪等大屏设备上&#xff0c;不需要带笔记本电脑&…