冒泡排序算法的 python 实现与 C 的比较

昨天用c写了简单的冒泡排序算法之后,正好最近在学 python,也想试试用python实现一下。

总体感觉,对于这种简答的小程序,python 确实充分体现了他简洁,易懂的特点。写起来特别流畅,舒服。但是写完之后总感觉哪里有点别扭,就是可能用管了c,对于那种很强的逻辑顺序有着天然的倾向。

先设计好排序的函数,然后在主函数里调用,模块间的数据传递啊,地址传递啊,让我们不仅理解了程序,也对他底层的操作有了了解。比如一个交换数据函数,传递的必须是地址,只有这样才能正确的交换。不相信的客官看这里:

我把函数换成了仅仅是数据的交换,不交换地址,运行结果。。。。并没有什么卵用

冒泡排序算法的 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)

运行结果

冒泡排序算法的 python 实现与 C 的比较

c的程序可以看我的上一篇博客 。