# 冒泡排序
# 作用:对给出的n个顺序不定的数进行排序
# 输入:任意数组A
# 输出:按顺序排列的数组A
 
# 冒泡排序过程
# 第一趟:以第一个数为基准,从最后一位数开始,依次与它比较,
#               若大于它,则交换,若小于它,则继续判断前一个数
#               完成一趟后,这个基准数(即第一个数)是所有数里最大的
# 第二趟:以第二个数为基准,从最后一位数开始,依次与它比较,
#               若大于它,则交换,若小于它,则继续判断前一个数
#               完成一趟后,这个基准数(即第二个数)是除了第一个数之外最大的
# 以此类推,直到以最后一个数位基准时,得到倒序的数组
 
 1 # 在此修改初始数据
2 A = [12,56,92,-1,5,110,92,999,-39,21,76,33,56]
3
4 print('您的初始数据为:')
5 print(A);print('\n'*1) # print('\n'*1) 意思为空一行,仅起使输出美观的作用
6 n = len(A) # 用n获取数组长度
7 i = 0 # 外循环时数组的下标
8 j = n-1 # 内循环时数组的下标
9
10 while i <= n-1:
11 while j != i:
12 if A[j] > A[i]:
13 temp = A[i]
14 A[i] = A[j]
15 A[j] = temp
16 j = j - 1
17 else:
18 j = j - 1
19 j = n -1 # 重置j,使得下次循环能j能从最后一个数开始
20 i = i + 1 # 完成一次循环后,第i个数已被确定,是当前剩余的数中最大的
21 print(A)
22
23 print('\n'*1)
24 print('冒泡排序的结果:') # 输出的数据是逆向排序的
25 print(A)
26
27 A.reverse() # python自带的函数,使逆序
28 print('取倒序后数据为:')
29 print(A)

运行结果:

您的初始数据为:
[12, 56, 92, -1, 5, 110, 92, 999, -39, 21, 76, 33, 56]
冒泡排序的结果:
[999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
取倒序后数据为:
[-39, -1, 5, 12, 21, 33, 56, 56, 76, 92, 92, 110, 999]

该算法具体实现过程中数组A的变化情况:

其中,下划线___表示的是在每一趟(每一次外循环)确定下来的数

 1 [999, 56, 92, -1, 5, 110, 92, 76, -39, 21, 56, 33, 12]
2 [999, 110, 92, -1, 5, 92, 76, 56, -39, 21, 56, 33, 12]
3 [999, 110, 92, -1, 5, 92, 76, 56, -39, 21, 56, 33, 12]
4 [999, 110, 92, 92, 5, 76, 56, 56, -39, 21, 33, 12, -1]
5 [999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
6 [999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
7 [999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
8 [999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
9 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
10 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
11 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
12 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
13 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]

简而言之,冒泡排序法就是每次找出剩余的数中最大的一个,并按顺序存储下来。

冒泡排序(bubble_sort)——Python实现的更多相关文章

  1. 算法:冒泡排序(python版)

    1.将n个元素从大到小排序后,选择第k个大的元素 #!/usr/bin/env python #coding -*- utf:8 -*- #冒泡排序选第k个元素 import random impor ...

  2. 排序算法之冒泡排序的python实现

    冒泡排序算法的工作原理如下: 1.  比较相邻的元素.如果第一个比第二个大(升序),就交换他们两个. 2.  对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大 ...

  3. 冒泡排序(Python实现)

    目录 1. while版本--冒泡排序 2. for版本--冒泡排序 3. 测试用例 4. 算法时间复杂度分析 1. while版本--冒泡排序 def bubble_sort_while(a_lis ...

  4. 冒泡排序之python

    冒泡排序(Bubble sort) 两两比较相邻记录的关键字,如果反序则交换,直到没有反序记录为止. 1.算法描述: 比较相邻的元素.如果第一个比第二个大,就交换它们两个: 对每一对相邻元素作同样的工 ...

  5. 冒泡排序Bubble_Sort

    基本原理:对于冒泡排序来说,基本思想是从第一个元素开始,数组中的数据依次和它后面相邻的数据进行比较,即1和2比较,2和3比较,a和a+1比较,直到倒数第二位和倒数第一位的比较,如果顺序不对就进行交换, ...

  6. 冒泡排序算法-python

    冒泡排序:每两个相互比较,总是选出大的相互交换,直至最后选出该列表中最大的数字 def bubbleSort(myList): for i in range(len(myList)-1):#一共进行几 ...

  7. 冒泡排序(python版)

    实现源码 def bubble(array): flag = len(array)- : iter = for i in range(flag): ]: array[i], array[i+]= ar ...

  8. 冒泡排序的python代码实现

    li = [33, 2, 10, 1,564,880,8,99,51,3]# for i in range(len(li) - 1):#     current = li[i]#     next_v ...

  9. 冒泡排序算法-Python实现

    #-*- coding: UTF-8 -*- import numpy as np def BubbleSort(a): for i in xrange(0, a.size): for j in xr ...

  10. 基于python的七种经典排序算法

    参考书目:<大话数据结构> 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. ...

随机推荐

  1. Kubernetes的认证机制

    1.了解认证机制 API服务器可以配置一到多个认证的插件(授权插件同样也可以).API服务器接收到的请求会经过一个认证插件的列表,列表中的每个插件都可以检查这个请求和尝试确定谁在发送这个请求.列表中的 ...

  2. 乘风破浪,Windows11设计和开发指导,全新图标字体和云母材质

    Windows11全新的布局设计 Windows 11全新的布局设计已设计为支持现代应用体验.渐进的圆角.嵌套元素和一致的排水沟相结合,营造出柔和.平静.平易近人的效果,强调目的的统一和易用性. ht ...

  3. SpringCloud Alibaba实战(11:引入服务网关Gateway)

    源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 大家好,我是三分恶. 在前面的章节中,我们已经完成了服务间的调用.统一配置等等,在这 ...

  4. 堆和栈的内存分布&一些关于内存泄露、栈溢出和野指针的内容(头秃

    内存泄漏&栈溢出 C++中,我们主要涉及的内存是栈和堆, 堆  (By programmer) 申请后由程序员主动释放,遗忘后果严重: 栈 (By compiler)需要时由编译器分配,在不需 ...

  5. Python—IP地址与整数之间的转换

    1. 将整数转换成IP: 思路:将整数转换成无符号32位的二进制,再8位进行分割,每8位转换成十进制即可. 方法一:#!usr/bin/python 2 #encoding=utf-8 3 #1. 将 ...

  6. buu Youngter-drive

    一.查壳,发现是upx的壳,用自解压方式,脱下壳 二.之后发现打不开了,应该是要修复,不想修复了,直接拖入ida 找到关键函数,中间发生一点小插曲,发现堆栈不平衡,然后导致F5反编译失败,百度了下是A ...

  7. MQTT介绍与使用(转载)

    物联网是新一代信息技术的重要组成部分,也是"信息化"时代的重要发展阶段.其英文名称是:"Internet of things(IoT)".顾名思义,物联网就是物 ...

  8. 『动善时』JMeter基础 — 55、JMeter非GUI模式运行

    目录 1.JMeter的非GUI模式说明 2.为什么使用非GUI模式运行JMeter 3.怎样使用非GUI模式运行JMeter (1)非GUI模式运行JMeter步骤 (2)其它参数说明 4.CLI模 ...

  9. Python装饰器、迭代器&生成器、re正则表达式、字符串格式化

    Python装饰器.迭代器&生成器.re正则表达式.字符串格式化 本章内容: 装饰器 迭代器 & 生成器 re 正则表达式 字符串格式化 装饰器 装饰器是一个很著名的设计模式,经常被用 ...

  10. 【Azure 环境】Azure通知中心(Notification Hub)使用百度推送平台解说

    问题描述 在通知中心的页面中显示支持BaiDu,介绍一下支持的是百度(Baidu)的什么吗?Azure的这个功能在国内使用的时候是否可以保证国内安卓手机的信息送达率? 问题解答 通知中心的页面中的Ba ...