冒泡排序Python版

昨天去图书馆自习,我向旁边的妹子借了本计算机等级考试的书看了看。在看那本书的时候我才发现,原来我以前把“选择排序”和“冒泡排序”搞反了。把选择当冒泡,把“冒泡”当选择了。

今天早上一起来我写了一下Python代码,写了一段冒泡排序的程序。大概是因为语法不熟悉的缘故,Python版冒泡排序我还是弄了10多分钟。以下是我的代码:

#!/usr/bin/python

a = range(10)

for i in xrange(10):
    for j in xrange(9 - i):
        if a[j] < a[j+1]:
            temp = a[j]
            a[j] = a[j+1]
            a[j+1] = temp

print a

和C/C++比起来,代码风格简洁多了。



  1. #!/usr/bin/python
    a=range(10)
    for i in xrange(10):
    for j in xrange(9 – i):
    if a[j]<a[j+1]:(a[j],a[j+1])=(a[j+1],a[j])
    print a

    这样效率才高嘛

    • @yetone 差不多啦,我只是觉得我那样写好读一些~

  2. 用快速排序,配合列表解析或者函数式编程,2行就搞定了,还简洁些

    #这是基于列表解析的
    def qsort(L):
    if len(L) <= 1 : return L
    return qsort([s for s in L[1:] if s = L[0]])

    #这是基于lambda表达式的
    def quickSort(L):
    if len(L) <= 1 : return L
    return quickSort(filter(lambda x : x = L[0], L[1:]))

    虽然可读性比较差,不过缩到2行了……好像没有啥实际用途……

    • 上面怎么有两行只有一半….装逼失败,重新发一遍

      #这是基于列表解析的
      def qsort(L):
      if len(L) <= 1 : return L
      return qsort([s for s in L[1:] if s = L[0]])

      #这是基于lambda表达式的
      def quickSort(L):
      if len(L) <= 1 : return L
      return quickSort(filter(lambda x : x = L[0], L[1:]))

  3. 既然是python,就 Pythonic 点嘛!
    像调换两个数值的位置, a,b = b,a 就可以了
    用tmp=a; a=b;b=tmp; 是c的风格嘛!

Post Navigation

无觅相关文章插件,快速提升流量