冒泡排序(bubble_sort)——Python实现
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实现的更多相关文章
- 算法:冒泡排序(python版)
1.将n个元素从大到小排序后,选择第k个大的元素 #!/usr/bin/env python #coding -*- utf:8 -*- #冒泡排序选第k个元素 import random impor ...
- 排序算法之冒泡排序的python实现
冒泡排序算法的工作原理如下: 1. 比较相邻的元素.如果第一个比第二个大(升序),就交换他们两个. 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大 ...
- 冒泡排序(Python实现)
目录 1. while版本--冒泡排序 2. for版本--冒泡排序 3. 测试用例 4. 算法时间复杂度分析 1. while版本--冒泡排序 def bubble_sort_while(a_lis ...
- 冒泡排序之python
冒泡排序(Bubble sort) 两两比较相邻记录的关键字,如果反序则交换,直到没有反序记录为止. 1.算法描述: 比较相邻的元素.如果第一个比第二个大,就交换它们两个: 对每一对相邻元素作同样的工 ...
- 冒泡排序Bubble_Sort
基本原理:对于冒泡排序来说,基本思想是从第一个元素开始,数组中的数据依次和它后面相邻的数据进行比较,即1和2比较,2和3比较,a和a+1比较,直到倒数第二位和倒数第一位的比较,如果顺序不对就进行交换, ...
- 冒泡排序算法-python
冒泡排序:每两个相互比较,总是选出大的相互交换,直至最后选出该列表中最大的数字 def bubbleSort(myList): for i in range(len(myList)-1):#一共进行几 ...
- 冒泡排序(python版)
实现源码 def bubble(array): flag = len(array)- : iter = for i in range(flag): ]: array[i], array[i+]= ar ...
- 冒泡排序的python代码实现
li = [33, 2, 10, 1,564,880,8,99,51,3]# for i in range(len(li) - 1):# current = li[i]# next_v ...
- 冒泡排序算法-Python实现
#-*- coding: UTF-8 -*- import numpy as np def BubbleSort(a): for i in xrange(0, a.size): for j in xr ...
- 基于python的七种经典排序算法
参考书目:<大话数据结构> 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. ...
随机推荐
- 【NX二次开发】拉伸的偏置方向猜想与验证
结论:偏置的方向为曲线方向与拉伸方向的向量叉乘. 在UF_MODL_create_extrusion帮助中有这么一句话:Note that the offset direction is determ ...
- 面试官:一个TCP连接可以发多少个HTTP请求?
曾经有这么一道面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么? 相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式.什 ...
- 分布式系统ID的生成方法之UUID、数据库、算法、Redis、Leaf方案
一般单机或者单数据库的项目可能规模比较小,适应的场景也比较有限,平台的访问量和业务量都较小,业务ID的生成方式比较原始但是够用,它并没有给这样的系统带来问题和瓶颈,所以这种情况下我们并没有对此给予太多 ...
- .NET Core/.NET5/.NET6 开源项目汇总5:权限管理系统项目
系列目录 [已更新最新开发文章,点击查看详细] 企业管理系统一般包含后台管理UI.组织机构管理.权限管理.日志.数据访问.表单.工作流等常用必备功能.下面收集的几款优秀开源的管理系统,值得大家 ...
- ANDROID开发 Fatal signal 11(SIGSEGV) at 0x问题解决方案
最近做ANDROID开发,也遇到了很多程序员遇到的一个问题:FATAL SIGNAL 11(SIGSEGV) at 0xxxxx,自然是各种搜索是否有人已然解决,虽然搜索出来的已有案例不少,基本都是内 ...
- 案例 | 腾讯广告 AMS 的容器化之路
作者 张煜,15年加入腾讯并从事腾讯广告维护工作.20年开始引导腾讯广告技术团队接入公司的TKEx-teg,从业务的日常痛点并结合腾讯云原生特性来完善腾讯广告自有的容器化解决方案 项目背景 腾讯广告承 ...
- C#WebService的创建与发布
VS中新建项目-Web-ASP.NET Web应用程序 然后确定,选择空模版就可以了 其中CRMService.asmx是点击项目新建Web服务(asmx) 这样基本的功能就能用了,然后就是发布 点击 ...
- NAT网络地址转换技术
NAT网络地址转换技术 目录 一.NAT概述 1.1.概述 1.2.NAT 的应用场景 二.NAT的类型及配置命令 2.1.静态NAT 2.2.动态NAT 2.3.Easy IP 2.4.NATP 2 ...
- Golang编写Windows动态链接库(DLL)及C调用范例
一.准备. 1.GoLang在1.10版本之后开始支持编译windows动态链接库,可以打开命令行工具使用go version 查看自己的go版本. 2.你的电脑上需要gcc,如果没有的话[点击这里] ...
- kubernetes源码解析---- apiserver路由构建解析(2)
kubernetes源码解析---- apiserver路由构建解析(2) 上文主要对go-restful这个包进行了简单的介绍,下面我们通过阅读代码来理解apiserver路由的详细构建过程. (k ...