`
ay_guobo
  • 浏览: 115993 次
  • 性别: Icon_minigender_1
  • 来自: 札幌
社区版块
存档分类
最新评论

菜鸟学python - 排序

 
阅读更多

开始学习Python了,练手一下吧。一些很基本的东西,代码写得很幼稚,但也算是一点点的进步吧。
代码在python 2.7下测试通过,使用的编辑器为Spyder。

我感觉Spyder挺好的,本来想用NetBeans7.0.1,但安装好后总是在logo画面秒退。唉,悲剧了。Python排序算法 - 菜鸟学Python - 梦想社 - 梦想社

不说了,上代码 ~Python排序算法 - 菜鸟学Python - 梦想社 - 梦想社

顺便用Python的matplot把随机生成的2000个正整数给画出来了。

 Python排序算法 - 菜鸟学Python - 梦想社 - 梦想社
 这不是数学中严格意义上的随机分布。

001 # -*- coding: utf-8 -*-
002 """
003 Created on Wed Sep 28 16:58:29 2011
004 
005 @author: Guo
006 """
007 import time 
008 import random 
009 import numpy as np
010 import matplotlib
011 import matplotlib.pyplot as plt
012 
013 randomList = []
014 maxValue = 2000
015 numberRandom = 2000
016 
017 """
018 直接插入排序
019 """
020 def insert_Sort(data):
021     for i in range(1, len(data)):
022         temp = data[i]    #data[i] is to insert
023         j = i - 1
024         while j >= 0 and temp < data[j]:
025             data[j + 1] = data[j]
026             j = j - 1
027         if j <> i - 1:
028             data[j + 1] = temp     #insert temp
029     sortedData = data
030     return sortedData
031     
032 """
033 随机数构造函数
034 """
035 def createRandomList():
036     for i in range(numberRandom):
037         randomList.append(random.randint(1,maxValue));
038 
039 """
040 冒泡排序
041 """  
042 def bubblesort(data):
043     sortedData = []
044     for i in range(len(data- 1, 1, -1):
045         for j in range(0, i):
046             if data[j] > data[j + 1]:
047                 data[j], data[j + 1] = data[j + 1], data[j]
048     sortedData = data
049     return sortedData    
050 
051 """
052 希尔排序
053 """   
054 def shell_Sort(data, n = None):
055     if n == None:
056         n = len(data/ 2
057         if n % 2 == 0:
058             n = n + 1
059     for i in range(0, n):
060         newdata = data[i:len(data):n]
061         insert_sort(newdata)
062         data[i:len(data):n] = newdata
063     if n <> 1:
064         d = n / 2
065         if d % 2 == 0:
066             d = d + 1
067         shell_Sort(data, d)
068         
069 """
070 快速排序
071 """
072 def quickSort(data, low = 0, high = None):
073     if high == None:
074         high = len(data- 1
075     if low < high:
076         s, i, j = data[low], low, high
077         while i < j:
078             while i < j and data[j] >= s:
079                 j = j - 1
080             if i < j:
081                 data[i] = data[j]
082                 i = i + 1
083             while i < j and data[i] <= s:
084                 i = i + 1
085             if i < j:
086                 data[j] = data[i]
087                 j = j - 1
088         data[i] = s
089         quickSort(data, low, i - 1)
090         quickSort(data, i + 1, high)
091 
092 """
093 堆排序
094 """
095 def heap_Adjust(data, s, m):
096     if 2 * s > m:
097         return
098     temp = s - 1
099     if data[2*- 1] > data[temp]:
100         temp = 2 * s - 1
101     if 2 * s <= m - 1 and data[2*s] > data[temp]:
102         temp = 2 * s
103     if temp <> s - 1:
104         data[- 1], data[temp] = data[temp], data[- 1]
105         heap_Adjust(data, temp + 1, m)
106 def heap_sort(data):
107     m = len(data/ 2
108     for i in range(m, 0, -1):
109         heap_Adjust(data, i, len(data))
110     data[0], data[-1] = data[-1], data[0]
111     for n in range(len(data- 1, 1, -1):
112         heap_Adjust(data, 1, n)
113         data[0], data[- 1] = data[- 1], data[0]
114 
115 """---------------------------以上是函数定义-----------------------------------"""
116 
117 """     
118 显示随机数
119 """     
120 createRandomList()
121 print "The random numbers are:"
122 print randomList 
123   
124 """
125 显示冒泡排序所需时间
126 """ 
127 starttime = time.clock()    
128 createRandomList()
129 bubblesort(randomList)
130 print "After the bubblesot, the sequence numbers are:"
131 print bubblesort(randomList)
132 endtime = time.clock() 
133 print "The bubblesort time cost is:", (endtime-starttime)
134 
135 """  
136 显示直接插入排序所需时间
137 """
138 starttime = time.clock()  
139 createRandomList()
140 insert_Sort(randomList)
141 endtime = time.clock() 
142 print "The insert_Sort time cost is :", (endtime-starttime)
143 
144 """  
145 显示快速排序所需时间
146 """
147 starttime = time.clock()  
148 createRandomList()
149 quickSort(randomList)
150 endtime = time.clock() 
151 print "The quickSort time cost is :", (endtime-starttime)
152 
153 """  
154 显示堆排序所需时间
155 """
156 starttime = time.clock()  
157 createRandomList()
158 heap_Adjust(randomList)
159 endtime = time.clock() 
160 print "The heap_Adjust cost is :", (endtime-starttime)

分享到:
评论

相关推荐

    python-note 菜鸟学习笔记.zip

    在"python-note"中,可能会详细解释如何创建、访问和操作这些数据结构,以及它们在实际问题中的应用,比如数据存储、过滤重复项、排序等。 【Python面向对象编程】 Python是完全面向对象的语言,支持类(class)和...

    菜鸟经典python100例.docx

    这个问题可以帮助我们学习如何使用 Python 的列表排序函数和条件语句来解决排序问题。 六、斐波那契数列问题 在第六个问题中,我们需要实现斐波那契数列的计算。这个问题可以使用 Python 的递归函数和循环语句来...

    python从零开始学算法-查找排序练习题部分代码

    这里是专栏第十篇练习题所对应的代码文件,特别分出来希望可以对大家有帮助。三道练习题都可以在了LeetCode上找到,如果...希望可以帮助大家更好的学习,但我也是一个菜鸟,还有很多不足,希望可以一起讨论,一起进步。

    青少年趣味编程Python系列课程-2021-07-17.docx

    而"Python 基础教程 | 菜鸟教程"、"Python 中文学习大本营"等在线平台提供了丰富的学习资源,Python官网和官方文档(英文)也是不可或缺的参考。 总之,Python是一门涵盖广泛领域的编程语言,无论是在编程基础、...

    菜鸟Python基础教程1

    - 列表(List):可变序列,支持添加、删除和索引元素,以及排序等操作。 - 元组(Tuple):不可变序列,一旦创建就不能修改,常用于返回多个值或作为字典的键。 - 字典(Dictionary):键值对的集合,提供快速的查找和...

    希尔排序实用程序(win)

    python希尔排序,开源: https://codechina.csdn.net/-/snippets/353 基于菜鸟的https://www.runoob.com/python3/python-shellsort.html

    菜鸟教程python100例部分算法题解C++实现.7z

    标题中的“菜鸟教程python100例部分算法题解C++实现.7z”表明这是一个针对初学者的Python算法教程的C++版本实现。这个压缩包包含了一系列算法问题的解决方案,旨在帮助学习者通过实际编程来理解和掌握算法。C++是一...

    python3菜鸟教程 详细记录python的range函数用法.docx

    ### Python3菜鸟教程:深入解析range函数与列表操作 #### range()函数详解 在Python编程中,`range()`函数是一个非常实用且强大的内置函数,它主要用于生成一系列连续整数的序列。这对于创建数字序列、控制循环...

    Python从菜鸟到大神的100道经典练习题

    ### Python从菜鸟到大神的100道经典练习题 #### 练习题知识点详解 **【程序1】** - **题目**: 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? - **知识点**: - **循环**: 使用嵌套`...

    人工智能程序设计-高级Python程序设计-西工大-noj前60道.pdf

    - **Python教程**:建议参考菜鸟教程,学习Python的基本语法。 - **简化链式比较**:波浪号`~`提醒可简化代码,如将`0改写为`0 。 - **函数定义**:函数前后应空两行,末尾空一行以保持代码整洁。 - **Latex公式...

    python编程100例

    15. **算法与数据结构**:应用Python实现常见的排序算法(如冒泡、快速、归并排序)和查找算法。 每一个实例都是一个学习和探索的机会,通过亲手实践,你可以逐步巩固Python编程的基础,提升解决问题的能力。在学习...

    这是个python题库,入门菜鸟级

    "这是个python题库,入门菜鸟级"的标题表明这个压缩包文件包含了适合初级Python学习者练习的题目,旨在帮助他们巩固基础知识,提升编程技能。 这个题库可能涵盖了以下几个方面: 1. **基础语法**:包括变量、数据...

    Python超级实用小案例(最全讲解)

    Python适用于各种实际应用场景,如使用matplotlib制作动画来演示算法过程,如快速排序和归并排序。通过turtule库可以创建动态效果,如绘制雪花或时间轴。这些实例展示了Python在算法实现和可视化方面的实用性。 ...

    python题目.docx

    - 示例D中的`print('a' )`返回True,因为'a'、'b'、'c'按照ASCII码值递增排序。 ### 字符串逻辑运算 23. **知识点:逻辑运算** - Python中的逻辑运算符`and`、`or`可以用于字符串比较。 - 示例C中的`print(a &gt; ...

    菜鸟教程-抓包及发包的方法

    软件会实时显示经过该接口的所有数据包,你可以根据时间戳、源/目标IP、端口、协议等字段进行过滤和排序,以便快速定位感兴趣的数据包。 tcpdump则是一个命令行工具,更适用于系统管理员和高级用户。通过指定参数,...

    python简明教程pdf版本

    但我可以根据“python简明教程pdf版本”的标题,以及“非常好的python入门教程,简单上手快,菜鸟入门可用”的描述来构建一些Python入门的知识点。 Python是一种广泛使用的高级编程语言,以其清晰的语法和强大的...

    Python技术速查手册.docx

    - **在线教程**:菜鸟教程(https://www.runoob.com/python/python-tutorial.html)、W3School(https://www.w3school.com.cn/python/)等。 - **书籍**:《Python编程:从入门到实践》、《流畅的Python》等。 ...

    python学习网站整理——半天时间搜集的 20个网站

    1.菜鸟教程 python3 python2 //文本内容学习,相当于字典 2.我要自学网 https://www.51zxw.net/ //视频学习,部分需要支付V币,充10块钱可以看好多视频。 3.廖雪峰的官方网站 ...

    probie菜鸟翻译插件 v1.0.1-源码.zip

    "Probie菜鸟翻译插件"的源码可能包含各种编程语言(如JavaScript、Python或C++),用于实现文字翻译的功能,帮助用户在浏览网页或阅读文档时实时翻译陌生的词汇或句子。学习源码,你可以看到如何处理API请求,如何...

    谁说菜鸟不会数据分析工具篇案例数据

    1. **Excel**:作为最基础的数据处理工具,Excel提供了大量的功能,如排序、过滤、公式计算、图表制作等,非常适合初级数据分析。学习如何使用PivotTable(透视表)和VLOOKUP函数是Excel数据分析的基础。 2. **...

Global site tag (gtag.js) - Google Analytics