zoukankan      html  css  js  c++  java
  • 冒泡排序算法的 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 模块之-time
    asp.net web 通过IHttpAsyncHandler接口进行消息推送
    模拟登陆
    Socket发送文件
    asp.net 在自己指定的文件夹下面弄个App.config来读取配置
    C#多线程数据分布加载
    socket收发消息
    .net分布在指定文件夹的web.confgi或者app.config
    linux 修改oracle字符集
    文件读取草稿(excel,csv)
  • 原文地址:https://www.cnblogs.com/qsyll0916/p/7502919.html
Copyright © 2011-2022 走看看