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版)的更多相关文章

  1. 字符串匹配算法之 kmp算法 (python版)

    字符串匹配算法之 kmp算法 (python版) 1.什么是KMP算法 KMP是三位大牛:D.E.Knuth.J.H.MorriT和V.R.Pratt同时发现的.其中第一位就是<计算机程序设计艺 ...

  2. 经典算法冒泡排序java版

    写个冒泡排序吧 冒泡排序(Bubble Sort)是一种典型的交换排序算法,通过交换数据元素的位置进行排序. public class BubbleSort{ public int[] bubbleS ...

  3. 二分查找算法(Python版)

    [本文出自天外归云的博客园] 记性不好(@.@),所以平时根本用不到的东西就算学过如果让我去想也会需要很多时间(*.*)! 二分查找算法 在一个有序数组中查找元素最快的算法,也就是折半查找法,先找一个 ...

  4. 数据结构与算法(python版)

    ADT抽象数据类型(ADT:Abstract Data Type):ADT是对数据进行处理的一种逻辑描述,并不涉及如何实现这些处理. 同一ADT可以采用不同的数据结构来实现:1.采用程序设计语言的控制 ...

  5. 数据结构与算法(python版)教程

    算法的性质 算法的描述 算法的设计与分析

  6. 北京大学公开课《数据结构与算法Python版》

    之前我分享过一个数据结构与算法的课程,很多小伙伴私信我问有没有Python版. 看了一些公开课后,今天特向大家推荐北京大学的这门课程:<数据结构与算法Python版>. 课程概述 很多同学 ...

  7. Python版冒泡排序算法

    0 为什么写本文 一方面对经典排序算法冒泡排序进行复习,另一方面通过实际应用来检验python基础知识的掌握情况,包括range函数.len函数.for循环.if语句.函数定义与调用.列表的排序等知识 ...

  8. python 算法 -- 冒泡排序

    python 排序算法 -- 冒泡排序 原理 从数组的底部开始, 两两比较大小, 小的在下,大的在上, 依次类推直到顶部. 当整个数组比较完毕, 则最上面的一定是最大值(此即冒泡的由来); 当第一轮比 ...

  9. 常见查找算法之php, js,python版

    常用算法 >>>1. 顺序查找, 也叫线性查找, 它从第一个记录开始, 挨个进行对比, 是最基本的查找技术 javaScript 版顺序查找算法: // 顺序查找(线性查找) 只做找 ...

  10. KMP算法-Python版

                               KMP算法-Python版 传统法: 从左到右一个个匹配,如果这个过程中有某个字符不匹配,就跳回去,将模式串向右移动一位.这有什么难的? 我们可以 ...

随机推荐

  1. Java-数组练习2

    2.找出如下数组中最大的元素和最小的元素,a[][]={{3,2,6},{6,8,2,10},{5},{12,3,23}} int[][] i={{3,2,6},{6,8,2,10},{5},{12, ...

  2. iOS-----Xcode-Debug尝试

    在Xcode中,Debug时,不能像eclipse ,或VS那些集成开发那样,能直接查看变量的值.那怎么在调试的时候查看XCode的变量呢? 有一些方法的. 1.新建一个Single View App ...

  3. web应用程序性能优化

    web应用程序基本上都是在浏览器地址栏输入一段网站,然后进入,最后浏览器显示你想要的东西. 这就是用户所能体会到的东西.那作为程序员我们看到了什么呢? 一次HTTP 请求主要的流程是: 1.DNS服务 ...

  4. 如何正确选择UI自动化测试

    近年流行一个词-UI,和UI搭边好像都那么高大上,软件测试行业也不例外,比如UI自动化测试. 常见的UI自动化测试程序有哪些呢? l  带UI的Unit Test,比如mock掉底层代码,仅仅测试UI ...

  5. Java Annotation 总结

    Annotation 被称为注解,在Java开发中是相当常见的,通过注解,我们可以简化代码提高开发效率.例如Override Annotation,这个应该算是在开发过程中使用最多的注解了.下面这个例 ...

  6. svn的安装与使用

    Eclipse安装SVN插件 1.下载最新的Eclipse,我的版本是3.7.2 indigo(Eclipse IDE for Java EE Developers)版 如果没有安装的请到这里下载安装 ...

  7. java中线程存活和线程执行的问题!

    /* 下面的程序会出现下面的情况,当Thread-0, Thread-1, Thread-2都被wait的时候,可能会同时苏醒 Thread-0 put Thread-1 put Thread-2 p ...

  8. Huge Page 是否是拯救性能的万能良药?

    本文将分析是否Huge Page在任何条件下(特别是NUMA架构下)都能带来性能提升. 本博客已经迁移至: http://cenalulu.github.io/ 为了更好的体验,请通过此链接阅读: h ...

  9. SQL Cookbook

    1.  利用LAG OVER抑制结果集中的重复值 原始结果如下: SQL> select deptno,ename from emp order by deptno; DEPTNO ENAME ...

  10. PL/SQL Developer中文版下载以及使用图解(绿色版)

    下载地址:http://pan.baidu.com/s/1eQCTmkM 1.运行plsqldev.exe程序: 2.设置Oracle主目录名/OCI库地址,如图: 重新启动程序. 3.配置登陆信息, ...