算法:冒泡排序(python版)
1.将n个元素从大到小排序后,选择第k个大的元素
#!/usr/bin/env python
#coding -*- utf:8 -*-
#冒泡排序选第k个元素
import random
import time def select_k():
n = int(input("所要生成的数组的长度:"))
arraya = []
for i in range(n):
x = random.choice(range(100))
arraya.append(x)
print("所生成的数组(未排序):", arraya)
arrayb = bubble_sort(arraya)
print("排序后的数组:", arrayb)
k = int(input("选择第几个元素:")) #从大到小第k个元素
result = arrayb[k-1]
return result def bubble_sort(a):
for i in range(len(a)):
for j in range(i,len(a)):
if a[i]<a[j]:
tmp = a[i]
a[i] = a[j]
a[j] = tmp
return a if __name__=='__main__':
t0 = time.clock() print("第k个元素是:",select_k()) #第二次调用clock()减去第一次调用clock()即为程序执行的时间
print("程序执行的时间:",time.clock()-t0)
2.泡排序前k个元素,后面的元素逐个和第k个元素比较,如果小于则忽略,如果大于则加入到正确的位置并移除最后一个元素
#!/usr/bin/env python
#coding -*- utf:8 -*-
#冒泡排序前k个元素,后面的元素逐个和第k个元素比较,如果小于则忽略,如果大于则
#加入到正确的位置并移除最后一个元素 import random
import time def select_k():
n = int(input("所要生成的数组的长度:"))
k = int(input("选择第几个元素:"))
arraya = []
for i in range(n):
x = random.choice(range(100))
arraya.append(x)
print("所生成的数组(未排序):", arraya)
arrayb = bubble_sort(arraya[:k])
print("前k个元素排序后的数组:", arrayb) for i in range(k, n):
if(arrayb[-1]<arraya[i]):
arrayb.append(arraya[i])
arrayb = bubble_sort(arrayb)
arrayb.pop() #返回第k个大的元素
result = arrayb[-1]
return result def bubble_sort(a):
for i in range(len(a)):
for j in range(i,len(a)):
if a[i]<a[j]:
tmp = a[i]
a[i] = a[j]
a[j] = tmp
return a if __name__=='__main__':
t0 = time.clock()
print("第k个大的元素是:",select_k()) #第二次调用clock()减去第一次调用clock()即为程序执行的时间
print("程序执行的时间:",time.clock()-t0)
3.时间对比
方法一:
N | 10 | 100 | 1000 | 5000 | 10000 | 20000 |
T | 0.0 | 0.001 | 0.06 | 1.17 | 4.65 | 18.25 |
方法二:
N | 10 | 100 | 1000 | 5000 | 10000 | 20000 |
T | 0.0 | 0.0 | 0.0 | 0.02 | 0.02 | 0.03 |
算法:冒泡排序(python版)的更多相关文章
- 字符串匹配算法之 kmp算法 (python版)
字符串匹配算法之 kmp算法 (python版) 1.什么是KMP算法 KMP是三位大牛:D.E.Knuth.J.H.MorriT和V.R.Pratt同时发现的.其中第一位就是<计算机程序设计艺 ...
- 经典算法冒泡排序java版
写个冒泡排序吧 冒泡排序(Bubble Sort)是一种典型的交换排序算法,通过交换数据元素的位置进行排序. public class BubbleSort{ public int[] bubbleS ...
- 二分查找算法(Python版)
[本文出自天外归云的博客园] 记性不好(@.@),所以平时根本用不到的东西就算学过如果让我去想也会需要很多时间(*.*)! 二分查找算法 在一个有序数组中查找元素最快的算法,也就是折半查找法,先找一个 ...
- 数据结构与算法(python版)
ADT抽象数据类型(ADT:Abstract Data Type):ADT是对数据进行处理的一种逻辑描述,并不涉及如何实现这些处理. 同一ADT可以采用不同的数据结构来实现:1.采用程序设计语言的控制 ...
- 数据结构与算法(python版)教程
算法的性质 算法的描述 算法的设计与分析
- 北京大学公开课《数据结构与算法Python版》
之前我分享过一个数据结构与算法的课程,很多小伙伴私信我问有没有Python版. 看了一些公开课后,今天特向大家推荐北京大学的这门课程:<数据结构与算法Python版>. 课程概述 很多同学 ...
- Python版冒泡排序算法
0 为什么写本文 一方面对经典排序算法冒泡排序进行复习,另一方面通过实际应用来检验python基础知识的掌握情况,包括range函数.len函数.for循环.if语句.函数定义与调用.列表的排序等知识 ...
- python 算法 -- 冒泡排序
python 排序算法 -- 冒泡排序 原理 从数组的底部开始, 两两比较大小, 小的在下,大的在上, 依次类推直到顶部. 当整个数组比较完毕, 则最上面的一定是最大值(此即冒泡的由来); 当第一轮比 ...
- 常见查找算法之php, js,python版
常用算法 >>>1. 顺序查找, 也叫线性查找, 它从第一个记录开始, 挨个进行对比, 是最基本的查找技术 javaScript 版顺序查找算法: // 顺序查找(线性查找) 只做找 ...
- KMP算法-Python版
KMP算法-Python版 传统法: 从左到右一个个匹配,如果这个过程中有某个字符不匹配,就跳回去,将模式串向右移动一位.这有什么难的? 我们可以 ...
随机推荐
- Bootstrap~表单Form
回到目录 在进行自己的后台改版时,大体布局都使用了bootstrap,剩下的表单部分没理由不去使用它,对于表单的美化和布局,bootstrap做的也是很不错的,有大气的边框,多功能的按钮及宏观的表单布 ...
- 知方可补不足~SQL2005使用ROW_NUMBER() OVER()进行数据分页
回到目录 数据分页是这个经常说的东西,无论在WEBForm还是WinForm中它都会被单独拿出来,或者是公用组件,或者是公用类库,反正对于数据分页这个东西,总是我们关注的一个话题,但事实上,数据分页归 ...
- Java程序员的日常——SpringMVC+Mybatis开发流程、推荐系统
今天大部分时间都在写业务代码,然后算是从无到有的配置了下spring与mybatis的集成. SpringMVC+Mybatis Web开发流程 配置数据源 在applicationContext.x ...
- 【原创】NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示
前言 NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2.而Netty的主要版本是Netty3和Netty ...
- Html与CSS快速入门03-CSS基础应用
这部分是html细节知识的学习. 快速入门系列--HTML-01简介 快速入门系列--HTML-02基础元素 快速入门系列--HTML-03高级元素和布局 快速入门系列--HTML-04进阶概念 边框 ...
- Introduction of Open CASCADE Foundation Classes
Open CASCADE Foundation Classes Open CASCADE基础类 eryar@163.com 一.简介 1. 基础类概述 Foundation Classes Overv ...
- Android入门(十八)服务
原文链接:http://www.orlion.ga/674/ 一.定义一个服务 创建一个项目ServiceDemo,然后在这个项目中新增一个名为 MyService的类,并让它继承自 Service, ...
- LESS-Middleware:Node.js 和 LESS 的完美搭配
LESS 是一个编写 CSS 的很好的方式 ,让你可以使用变量,嵌套规则,混入以及其它许多有用的功能,它可以帮助您更好地组织你的 CSS 代码. 最近我一直在研究 Node.js ,并想用 less- ...
- java中使用junit测试
最初写代码只要功能走通就不管了,然后如果出了什么问题再去修改,这是因为没做测试的工作.测试其实很简单. 1.准备 当前使用idea编写代码,用maven构建工程,使用maven的test功能来进行批量 ...
- HTML5的WebGL实现的3D和2D拓扑树
在HT for Web中2D和3D应用都支持树状结构数据的展示,展现效果各异,2D上的树状结构在展现层级关系明显,但是如果数据量大的话,看起来就没那么直观,找到指定的节点比较困难,而3D上的树状结构在 ...