昨天用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 的比较的更多相关文章

  1. python开发学习-day05(正则深入、冒泡排序算法、自定义模块、常用标准模块)

    s12-20160130-day05 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  2. python算法与数据结构-冒泡排序算法(32)

    一.冒泡排序介绍 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直到没有再需要 ...

  3. 冒泡排序算法(C#、Java、Python、JavaScript、C、C++实现)

    一.介绍 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小.首字母从Z到A)错误就把他们交换过来. 走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排 ...

  4. python --- 冒泡排序算法

    别想太多了,这个冒泡排序就是我们脑海中想到的那个冒泡,就好像是气泡一样,较小的元素比较轻,从而要往上浮出来, 冒泡排序算法. 要对‘气泡’序列处理若干遍.所谓一遍处理,就是自底向上检查一遍这个序列,并 ...

  5. 基本排序算法的Python实现

    本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序,堆排序,计数排序.希望大家回顾知识的时候也能从我的这篇文章得到帮助. 为了防止误导读者,本文所有概念性 ...

  6. 八大排序算法的 Python 实现

    转载: 八大排序算法的 Python 实现 本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个 ...

  7. 常用排序算法的python实现和性能分析

    常用排序算法的python实现和性能分析 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试 ...

  8. 一些排序算法的Python实现

    ''' Created on 2016/12/16 Created by freeol.cn 一些排序算法的Python实现 @author: 拽拽绅士 ''' '''值交换''' def swap( ...

  9. C#冒泡排序算法

    用了两种形式的数据,一个是泛型List,一个是数据int[].记录一下,作为自己学习过程中的笔记. using System; using System.Collections.Generic; us ...

随机推荐

  1. 使用 Python 解数学方程

    SymPy是符号数学的Python库.它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁.易于理解和扩展 服务器Ubuntu 1.安装Python 2.安装SymPy库 sudo pip in ...

  2. phoenix客户端连接hbase数据库报错:Traceback (most recent call last): File "bin/sqlline.py", line 27, in <module> import argparse ImportError: No module named argparse

    环境描述: 操作系统版本:CentOS release 6.5 (Final) phoenix版本:phoenix-4.10.0 hbase版本:hbase-1.2.6 现象描述: 通过phoenix ...

  3. js提取新浪邮箱的信用卡

    js提取用户新浪邮箱中的信用卡信息,是js非nodejs. 对比py,之前就做不好,出现了复杂点选验证码.js的开发速度只需要py的三分之一,甚至十分之一. js在客户端执行,py在后端执行,py要实 ...

  4. OpenCV学习笔记:opencv_highgui模块

    一,简介 本模块为跨平台的gui/IO组件,支持平台包括windows,linux,mac,IOS,android,可支持图像/视频/摄像头的读取显示以及转码. 二,分析 本模块为跨平台的gui/IO ...

  5. ios开发之--AVAudioPlayer/AVPlayer的应用

    项目当中用到了音频播放器,所以就参考官方文档,写了一个,代码如下: .h #import <UIKit/UIKit.h> @interface hAudioPlayViewControll ...

  6. VC++6.0相对路径无效的解决办法

    我们在开发程序时,常常需要操作相关的文件.操作文件一般有两种方法:绝对路径和相对路径.绝对路径是从盘符开始的,相对路径则是相对于当前目录. 绝对路径很简单,一般也不会出错,但是在实际开发过程中要慎用绝 ...

  7. Linux最大打开文件描述符数

    1.    系统最大打开文件描述符数:/proc/sys/fs/file-max a.    查看 $ cat /proc/sys/fs/file-max 186405 2. 设置 a.    临时性 ...

  8. MySQL复制搭建

    1. 原理 参考<涂抹MySQL  跟着三思一步一步学MySQL >这本书. 2.环境背景 操作系统 :CentOS 6.5 数据库版本:MySQL 5.6 主库A:192.168.1.2 ...

  9. 查询mssql 密码

    select name,password from syslogins Select master.dbo.fn_varbintohexstr(password_hash) from sys.sql_ ...

  10. fork(), waitpid()

    NAME fork - create a child process SYNOPSIS #include <unistd.h> pid_t fork(void); RETURN VALUE ...