冒泡排序算法的 python 实现与 C 的比较
昨天用c写了简单的冒泡排序算法之后,正好最近在学 python,也想试试用python实现一下。
总体感觉,对于这种简答的小程序,python 确实充分体现了他简洁,易懂的特点。写起来特别流畅,舒服。但是写完之后总感觉哪里有点别扭,就是可能用管了c,对于那种很强的逻辑顺序有着天然的倾向。
先设计好排序的函数,然后在主函数里调用,模块间的数据传递啊,地址传递啊,让我们不仅理解了程序,也对他底层的操作有了了解。比如一个交换数据函数,传递的必须是地址,只有这样才能正确的交换。不相信的客官看这里:
我把函数换成了仅仅是数据的交换,不交换地址,运行结果。。。。并没有什么卵用
这也就是为什么c是底层语言。学好c能让我们对计算机有很好的理解。
但是在python里面,特别方便,交换a,b的值,只需a ,b = b,a。是的 ,你没有看错,就是这样。简单虽然简单,但是我们并不知道他 的内部是怎么操作的。
还有一点就是主函数,可能是我刚开始学python,还没有摸透他的语法规则,之前写的程序都是没有主函数,让我很是不爽,主函数怎么能少了呢!!!!!
今天查了一下,才算明白 :
Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行,这些代码,可以认为是Python的main函数。
所以 python的执行不依赖于main函数,而且python从程序没有缩进的地方开始执行。
两种截然不同的编程风格,真是让人又爱又恨啊。
学习c是因为专业的需要。学习python是兴趣使然。
下面把两种代码都贴出来,便于读者比较分析。
python:
#2017.9.10
#冒泡排序算法 import time start = time.clock() #开始的时刻 def bubble(num):
length = len(num)
for i in range(length):
for j in range(length-i-1):
if num[j]>num[j+1]:
num[j],num[j+1] = num[j+1],num[j] #python的数据交换格式,非常方便简洁,a,b = b,a 就可以了
return num nums = [2,70,49,35,25,56,39,40,100,58,37]
print "原序列为:%r"%nums
print "冒泡排序后:%r"%bubble(nums) end = time.clock() #结束时刻
print "程序运行时间为:%.5f s"%(end-start)
运行结果
c的程序可以看我的上一篇博客 。
冒泡排序算法的 python 实现与 C 的比较的更多相关文章
- python开发学习-day05(正则深入、冒泡排序算法、自定义模块、常用标准模块)
s12-20160130-day05 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...
- python算法与数据结构-冒泡排序算法(32)
一.冒泡排序介绍 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直到没有再需要 ...
- 冒泡排序算法(C#、Java、Python、JavaScript、C、C++实现)
一.介绍 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小.首字母从Z到A)错误就把他们交换过来. 走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排 ...
- python --- 冒泡排序算法
别想太多了,这个冒泡排序就是我们脑海中想到的那个冒泡,就好像是气泡一样,较小的元素比较轻,从而要往上浮出来, 冒泡排序算法. 要对‘气泡’序列处理若干遍.所谓一遍处理,就是自底向上检查一遍这个序列,并 ...
- 基本排序算法的Python实现
本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序,堆排序,计数排序.希望大家回顾知识的时候也能从我的这篇文章得到帮助. 为了防止误导读者,本文所有概念性 ...
- 八大排序算法的 Python 实现
转载: 八大排序算法的 Python 实现 本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个 ...
- 常用排序算法的python实现和性能分析
常用排序算法的python实现和性能分析 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试 ...
- 一些排序算法的Python实现
''' Created on 2016/12/16 Created by freeol.cn 一些排序算法的Python实现 @author: 拽拽绅士 ''' '''值交换''' def swap( ...
- C#冒泡排序算法
用了两种形式的数据,一个是泛型List,一个是数据int[].记录一下,作为自己学习过程中的笔记. using System; using System.Collections.Generic; us ...
随机推荐
- mysql 两台主主复制配置
A.服务器 [mysqld] # The TCP/IP Port the MySQL Server will listen on port= server-id= #master-host=10.1. ...
- 解决webStorm没有cesium代码自动提示的方法
Webstorm中默认是没有cesium代码提示的,但是可以通过设置让它有智能提示 File -> Settings -> Languages&Frameworks -> J ...
- 解决sourcesafe admin用户自动登录并且不用密码的问题
用管理员(admin)登录Microsoft Visual SourceSafe Administration tools-> "SourceSafe Options界 ...
- 第五种方式,python使用组合来添加类方法和属性(二),以selenium的webdriver为例
组合优点多,但经常比继承需要额外的代码. 上一篇是 介绍装饰器.继承.元类.mixin,四种給类动态添加类属性和方法的四种方式. 此篇介绍直接把被组合的类的属性直接加入到类里面,前面的四个例子很简单, ...
- javascript的闭包计数器实现,python实现各种方法来实现计数器
菜鸟教程的javascript闭包章节中,演示了js计数器的实现. 教程地址 http://www.runoob.com/js/js-function-closures.html 代码1 var ...
- ubuntu alsa2
ALSA是Advanced Linux Sound Architecture简称.它包含一组kernel 驱动,一个应用编程接口(API)库以及一组工具函数.本文中,我们会向读者展示ALSA项目和组成 ...
- 基于NDK的Android防破解& Android防破解 【转载】
两篇防破解文章转载 基于NDK的Android防破解:http://blog.csdn.net/bugrunner/article/details/8634585 Android防破解:http:// ...
- Spring quartz Job不能依赖注入,Spring整合quartz Job任务不能注入
Spring quartz Job不能依赖注入,Spring整合quartz Job任务不能注入 Spring4整合quartz2.2.3中Job任务使用@Autowired不能注入 >> ...
- link常用的作用
1 引入样式 2设置网页标题上面图标
- 【Java知识点专项练习】之 接口和抽象类的区别
接口和抽象类的区别 接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的.接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为publi ...