`
ay_guobo
  • 浏览: 114033 次
  • 性别: 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-3.8.0-amd64-webinstall.exe

    python-3.8.0-amd64-webinstall.exe

    Salute_Python:菜鸟学习Python-从入门到跑路

    写在前面本地编译环境:Markdown编辑器使用主题使用在线编译环境:基于搭建的图床()我的联系方式:仓库说明:这是一份自己学习Python从入门到跑路的记录。内容还在不断更新中。程序以代码块的方式组织,如需运行...

    Python学习-最完整的基础知识大全.pdf

    菜鸟教程python2 菜鸟教程python2 菜鸟教程python3 菜鸟教程python3 Python2.7 ⼊门指南 Python2.7 ⼊门指南 Python3.6 ⼊门指南 Python3.6 ⼊门指南 廖雪峰Python教程 廖雪峰Python教程 Python100例 Python100例 ...

    python-3.9.1-amd64.zip

    python 版本: 3.9.1 windows 64位 exe安装包,官网链接:https://www.python.org/downloads/release/python-391/

    菜鸟学T-SQL与C# 增删改查

    菜鸟学T-SQL与C# 增删改查 菜鸟学T-SQL与C# 增删改查 菜鸟学T-SQL与C# 增删改查 菜鸟学T-SQL与C# 增删改查 菜鸟学T-SQL与C# 增删改查

    菜鸟学SSH-v1.0.pdf

    菜鸟学SSH-v1.0.pdf

    runoob菜鸟教程-python3教程

    runoob菜鸟教程的python3教程,用我自己写的工具下载的,非常好的书箱

    python菜鸟基础教程-终于懂得python入门菜鸟教程.pdf

    python菜鸟基础教程-终于懂得python⼊门菜鸟教程 Python语⾔是⼀种典型的脚本语⾔,简洁,语法约束少,接近⼈类语⾔。有丰富的数据结构,例如列表、字典、集合等。具有可移植性, ⽀持⾯向过程和⾯向对象编程,并且...

    python-note 菜鸟学习笔记.zip

    python-note 菜鸟学习笔记

    pyqt5-python-Gui入门教程

    pyqt5-python-Gui的入门教材,讲的非常简单易懂,建议学QT的初学者学习!

    python菜鸟3.0-终于清楚python菜鸟入门教程.pdf

    python菜鸟3.0-终于清楚python菜鸟⼊门教程 Python是⼀款功能强⼤的脚本语⾔,具有丰富和强⼤的库,重要的是,它还具有很强的可读性,易⽤易学,⾮常适合编程初学者⼊门。以 下是⼩编为你整理的python菜鸟⼊门教程 ...

    STM32菜鸟学习手册-罗嗦版

    STM32菜鸟学习手册-罗嗦版 。

    菜鸟入侵--利用资源搜索动画教程

    菜鸟入侵--利用资源搜索动画教程,内附有详细的使用说明 菜鸟入侵之利用资源篇 菜鸟在入侵的时候,如果能充分利用现有的资源,那将对自己的入侵起很大的

    python-3.8.0-webinstall.exe

    python-3.8.0-webinstall.exe

    Python菜鸟教程.docx

    Python菜鸟教程全文共5页,当前为第1页。Python菜鸟教程全文共5页,当前为第1页。Python菜鸟教程 Python菜鸟教程全文共5页,当前为第1页。 Python菜鸟教程全文共5页,当前为第1页。 标准数据类型 Python3 中有六个...

    Python菜鸟快乐游戏编程-pygame-课件PPT模板.pptx

    python菜鸟快乐游戏编程_pygame 演讲人 202x-11-11 2020 Python菜鸟快乐游戏编程-pygame-课件PPT模板全文共14页,当前为第1页。 目录 contents 第4章pygame基础知识 第5章植物大战僵尸 第1章python菜鸟快乐游戏编程_...

    菜鸟教程Python3.pdf

    菜鸟教程的python3的pdf版本,内容不是很多,但是把所有的语法点都覆盖到了,如果有需要可以拿去看一看。就是方便打印出来看而已,相比之下也没多什么内容

    python菜鸟教程xml-《菜鸟教程》之基础教程.pdf

    python菜鸟教程xml-《菜鸟教程》之基础教程 ⼀、基础教程 2.1 基本知识点 python默认的编码格式是ASCII格式;需要使⽤# -*- coding: UTF-8才能读取中⽂。 python能进⾏交互式编程,脚本式编程。 python标识符由字母...

    Python-基础语法.pdf

    Python 基础语法 " 菜鸟教程 Python 基础语法 Python 语言与 Perl,C 和 Java 等语言有许多相似之处。但是,也存在一些差异。 在本章中我们将来学习 Python 的基础语法,让你快速学会 Python 编程。 第一个 Python ...

Global site tag (gtag.js) - Google Analytics