# 冒泡排序
# 作用:对给出的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. 11:(1055, "'bbs02.app01_category.name' isn't in GROUP BY")

    后台报错:[err] 1055 --  'xxx' isn't in GROUP BY 解决方案: 初步判断是数据库(版本?配置?)的问题 进入mysql 的my.ini配置文件 ctrl+f 搜索找 ...

  2. Hadoop - 彻底解决警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...

    目录 1 - 在日志配置文件中忽略警告 - 有效 2 - 指定本地库的路径 - 无效 3 - 不使用 Hadoop 本地库 - 无效 4 - 替换 Hadoop 本地库 - 有效 5 - 根据源码,编 ...

  3. 关于equals()和hashcode()的一些约定

    本文章主要讨论和回答一下几个问题: equals()的四大特性 equals()和hashcode()之间的关系,为什么我们经常说这两个方法要么都重写,要么都不重写? HashMap.HashSet等 ...

  4. [.NET大牛之路 002] 什么是 .NET

    .NET 是一个开发平台,或者叫开发者平台.使用 .NET 你可以创建不同类型的应用程序,使用多种开发语言.编辑器和工具库创建网页.手机.桌面以及游戏等应用.其核心特点是:免费.开源和跨平台. 语言和 ...

  5. 用VSCode终端实现重定向比较程序输出和正确输出

    在刷 OJ 题目或者进行编程考试或比赛时,经常需要对编写好的程序进行测试,即运行编写好的程序,输入样例输入或者自己编写的输入数据,查看程序输出结果和样例输出或者正确输出是否一致.这种方法有很多弊端,当 ...

  6. 浙江大学计算机程序设计能力考试(PAT)简介

    计算机程序设计能力考试(Programming Ability Test,简称 PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学地评价计算机程序设计人才 ...

  7. Kubernetes通过downwardAPI传递元数据

    应用往往需要获取所运行环境的一些信息,包括应用自身以及集群中其他组件的信息.Kubernetes可以通过环境变量以及DNS进行服务发现,但其他信息如何处理呢?下面将介绍特定pod和容器元数据如何被传递 ...

  8. 试着给VuePress添加渐进式Web应用(PWA)支持,基于vuepress/plugin-pwa,点亮离线访问

    背景 有时候,我们也希望VuePress构建的文档中心能支持离线访问,这时候我们需要给他添加渐进式Web应用(PWA,Progressive Web App)的支持,根据官方文档指引,我们可以借助插件 ...

  9. 9.5、zabbix高级操作(1)

    在zabbix-web中删除之前所有监控的主机: 1.zabbix自动发现配置: zabbix-server通过扫描指定范围的ip地址发现zabbix-agent并自动添加监控主机,适用于zabbix ...

  10. POJ 2947 2947 Widget Factory 高斯消元

    给出组件的数量n,给出记录的数量m(n就是变元数量,m是方程数量).每一个记录代表一个方程,求每个组件的生产天数. 高斯消元即可 #include <cstdio> #include &l ...