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

菜鸟也来学python 笔记4 - python排序算法比较

 
阅读更多

刚学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 
021 def insert_Sort(data):
022     for i in range(1, len(data)):
023         temp = data[i]    #data[i] is to insert
024         j = i - 1
025         while j >= 0 and temp < data[j]:
026             data[j + 1] = data[j]
027             j = j - 1
028         if j <> i - 1:
029             data[j + 1] = temp     #insert temp
030     sortedData = data
031     return sortedData
032 """
033 随机数构造函数
034 """
035 
036 def createRandomList():
037     for i in range(numberRandom):
038         randomList.append(random.randint(1,maxValue));
039 
040 """
041 冒泡排序
042 """ 
043       
044 def bubblesort(data):
045     sortedData = []
046     for i in range(len(data- 1, 1, -1):
047         for j in range(0, i):
048             if data[j] > data[j + 1]:
049                 data[j], data[j + 1] = data[j + 1], data[j]
050     sortedData = data
051     return sortedData    
052 
053 """
054 希尔排序
055 """   
056     
057 def shell_Sort(data, n = None):
058     if n == None:
059         n = len(data/ 2
060         if n % 2 == 0:
061             n = n + 1
062     for i in range(0, n):
063         newdata = data[i:len(data):n]
064         insert_sort(newdata)
065         data[i:len(data):n] = newdata
066     if n <> 1:
067         d = n / 2
068         if d % 2 == 0:
069             d = d + 1
070         shell_Sort(data, d)
071 
072 """
073 快速排序
074 """
075 def quickSort(data, low = 0, high = None):
076     if high == None:
077         high = len(data- 1
078     if low < high:
079         s, i, j = data[low], low, high
080         while i < j:
081             while i < j and data[j] >= s:
082                 j = j - 1
083             if i < j:
084                 data[i] = data[j]
085                 i = i + 1
086             while i < j and data[i] <= s:
087                 i = i + 1
088             if i < j:
089                 data[j] = data[i]
090                 j = j - 1
091         data[i] = s
092         quickSort(data, low, i - 1)
093         quickSort(data, i + 1, high)
094 
095 """
096 堆排序
097 """
098 
099 def heap_Adjust(data, s, m):
100     if 2 * s > m:
101         return
102     temp = s - 1
103     if data[2*- 1] > data[temp]:
104         temp = 2 * s - 1
105     if 2 * s <= m - 1 and data[2*s] > data[temp]:
106         temp = 2 * s
107     if temp <> s - 1:
108         data[- 1], data[temp] = data[temp], data[- 1]
109         heap_Adjust(data, temp + 1, m)
110 def heap_sort(data):
111     m = len(data/ 2
112     for i in range(m, 0, -1):
113         heap_Adjust(data, i, len(data))
114     data[0], data[-1] = data[-1], data[0]
115     for n in range(len(data- 1, 1, -1):
116         heap_Adjust(data, 1, n)
117         data[0], data[- 1] = data[- 1], data[0]
118 
119 ###########---以上是函数定义---###########
120 
121 """     
122 显示随机数
123 """     
124 createRandomList()
125 print "The random numbers are:"
126 print randomList 
127 
128 """
129 显示冒泡排序所需时间
130 """ 
131 starttime = time.clock()    
132 createRandomList()
133 bubblesort(randomList)
134 print "After the bubblesot, the sequence numbers are:"
135 print bubblesort(randomList)
136 endtime = time.clock() 
137 print "The bubblesort time cost is:", (endtime-starttime)
138 
139 """  
140 显示直接插入排序所需时间
141 """
142 starttime = time.clock()  
143 createRandomList()
144 insert_Sort(randomList)
145 endtime = time.clock() 
146 print "The insert_Sort time cost is :", (endtime-starttime)
147 
148 """  
149 显示快速排序所需时间
150 """
151 starttime = time.clock()  
152 createRandomList()
153 quickSort(randomList)
154 endtime = time.clock() 
155 print "The quickSort time cost is :", (endtime-starttime)
可以运行,哪里有不对的地方,请大家指出来,菜鸟好提高。

分享到:
评论

相关推荐

    python numpy使用手册

    NumPy是Python科学计算的核心库,它为Python提供了一个多维数组对象,即ndarray,以及各种衍生对象(如掩码数组和矩阵),并包含了快速操作数组的各种算法,包括数学运算、逻辑运算、形状操作、排序、选择、输入/...

    FDDC2018金融算法挑战赛01 - A股上市公司季度营收预测 比赛笔记.zip

    【标题】:“FDDC2018金融算法挑战赛01 - A股上市公司季度营收预测比赛笔记.zip”是一个关于参与2018年金融大数据挖掘与应用竞赛(Financial Data Dreamland Challenge,简称FDDC)的项目源码。这个比赛聚焦于预测...

    毕业设计:基于python的系统监控.zip

    此毕业设计项目不仅展示了学生对Python编程的掌握,还体现了其在系统监控领域的知识应用,如系统API的调用、数据处理算法的设计以及用户界面的构建。这样的项目对于提升学生的实践技能、问题解决能力和项目管理经验...

    毕设&课程作业_智能笔记管理系统.zip

    总的来说,智能笔记管理系统是计算机科学与人工智能技术的完美结合,它不仅展示了学生们的实践能力,也为用户提供了智能化的学习工具。深入研究这个项目,不仅能增进对相关技术的理解,也有助于启发更多创新应用的...

    2020年 华为杯 全国数学建模比赛 B题 处理笔记.zip

    这通常包括了对问题的理解、模型建立、算法设计、编程实现、结果分析等多个环节的详细笔记,旨在展示参赛者的思考路径和解决策略。 【描述】: "比赛项目代码" 暗示这个压缩包中可能包含的是一系列与比赛相关的编程...

    kaggle比赛记录.zip

    【标题】"kaggle比赛记录.zip"是一个包含在Kaggle竞赛中使用的源代码的压缩文件。Kaggle是一个全球知名的平台,专注...同时,这也是一个很好的机会去复现他们的工作,从而理解不同的算法和技巧在特定问题上的应用效果。

    我的本科毕业设计,一个简洁的web笔记.zip

    一个简洁的Web笔记应用体现了对用户体验的关注,强调易用性和功能性,同时也要考虑到系统的可扩展性和维护性。 【标签】"本科毕业设计" 这个标签表明了项目的主要背景和目的,即一个学生的毕业作品,可能涉及到...

    leetcode中文版-use_Guide:本站使用说明

    内容一:相关知识、工具的学习资料、笔记等。 内容二:实践项目记录。 用途 1、记录学习心得、交流学习经验、分享学习成果。 2、学习成果和项目展示,丰富实践经验和简历。 目录 数据分析的计算机语言与工具类 ...

    毕设&课程作业_基于模糊专家系统的笔记本选购推荐系统.zip

    【标签】中的“毕设”表示这是一个毕业设计项目,通常需要学生综合运用所学知识,解决一个具体问题。而“人工智能”标签则指出了这个项目涉及AI领域,特别是模糊逻辑这一子领域。最后,“系统”标签说明这是一个完整...

    kaggle比赛题.zip

    参赛者通常会采用各种机器学习或深度学习算法来解决问题,并且他们的代码是解决实际问题的实战示例,具有很高的学习价值。 【标签】"比赛项目源码"进一步强调了这个资源的关键性质——它是一个用于研究和学习的数据...

    CCF比赛时的数据和代码.zip

    4. **requirements.txt**:如果项目是用Python编写的,这个文件会列出所有必要的第三方库和其版本。 5. **scripts**:可能包含数据预处理、模型训练和结果提交的脚本。 6. **models**:这里可能会保存训练好的模型...

    各次数模比赛资料.zip

    5. **笔记或文档**:团队在解决问题过程中的思考记录,可能包含算法设计、调试过程等内容。 6. **依赖库或环境配置**:可能包含所需的库文件或环境配置文件(如requirements.txt或conda环境文件),以便于他人复现...

    毕设&课程作业_课外阅读智能批注系统.zip

    例如,可以训练分类模型来识别学生对文章的理解难度,或者通过聚类算法找出阅读材料之间的关联性。 3. **知识图谱(Knowledge Graph)**:构建知识图谱可以帮助系统更好地理解文本中的实体和概念,并进行上下文推理...

    吴恩达老师第一章课程资源

    总的来说,这个压缩包提供的资源将引导学习者进入机器学习的世界,通过实际操作理解线性回归模型的工作原理,掌握数据处理的基本技巧,并为后续更复杂的机器学习算法打下坚实的基础。对于初学者来说,这是非常宝贵的...

    毕设&课程作业_智能医疗系统,各类医学疾病与治疗分类.zip

    机器学习算法可以训练模型来识别疾病的模式,例如,通过分析病人的症状、病史和医学影像数据,预测可能的诊断。深度学习则可能用于处理复杂的数据,如图像识别(识别病理切片或CT扫描)或自然语言处理(理解医生的...

    毕设&课程作业_基于STM32的6轴无人机.zip

    对于学习者来说,这是一个宝贵的资源,因为源码可以用来理解无人机控制系统的设计思路,学习如何利用STM32处理传感器数据、实现PID控制算法、电机驱动以及无线通信等功能。 【标签解析】 标签“STM32单片机”、...

    毕设&课程作业_万岳智慧党建系统.zip

    4. **数据库设计**:MySQL、Oracle或SQL Server等关系型数据库可能被用于存储系统数据,包括党员信息、组织结构、活动记录等,数据库设计需遵循规范化原则,提高数据一致性与查询效率。 5. **人工智能应用**:系统...

Global site tag (gtag.js) - Google Analytics