5
回答
问一个python问题
终于搞明白,存储TCO原来是这样算的>>>   

这是一个冒泡排序的实现,请各位大侠给出更简洁写法:

#!/usr/bin/python
#-*-coding:utf8-*-

def get_bignum(x,y):
    return x if x > y else y

def bubble_sort(num_list):
    num = len(num_list)
    result_list = []
    for i in range(0,num):
        temp = reduce(get_bignum,num_list)
        result_list.insert(0,temp)
        num_list.remove(temp)
    return result_list

num_list = [1,5,8,2]
print bubble_sort(num_list)

举报
索隆
发帖于5年前 5回/390阅
共有5个答案 最后回答: 5年前

引用来自“Java行者”的答案

冒泡排序还是很简单的,我下面的这个就不按你给的条件来了,你自己看着修改吧,也是冒泡排序:

#!/usr/bin/env 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

其实两个数交换,python中最简单的方式就是:

a, b = b, a

冒泡排序太简单了 不想写 双列表解析不需要用循环  

给你个快速排序的列表解析式  lambda+closure还可以更简单 

def qsort(L):
    if len(L) <=1 : return L
    return qsort([lt for lt in L[1:] if lt < L[0]]) + L[0:1] + \
           qsort([ge for ge in L[1:] if ge >= L[0]])
print qsort([5,4,3,222,12,-11])

 

 

--- 共有 2 条评论 ---
圣何塞白话人@索隆 其实还是循环 那天打字的时候酒喝多了.... 5年前 回复
索隆大神,双列表解析求解释??? 5年前 回复

冒泡排序还是很简单的,我下面的这个就不按你给的条件来了,你自己看着修改吧,也是冒泡排序:

#!/usr/bin/env 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


def bubble_sort(num_list):
	for i in range(len(num_list)):
		for j in range(i+1,len(num_list)):
			if num_list[i]>num_list[j]:
				num_list[i],num_list[j]=num_list[j],num_list[i]
	print(*num_list)


引用来自“苏坡you”的答案


def bubble_sort(num_list):
	for i in range(len(num_list)):
		for j in range(i+1,len(num_list)):
			if num_list[i]>num_list[j]:
				num_list[i],num_list[j]=num_list[j],num_list[i]
	print(*num_list)


def bubble_sort(a):
    length=len(a)
    for i in range(length):
        for j in range(length-1,i-1,-1):
            if a[j]<a[j-1]:
                a[j],a[j-1]=a[j-1],a[j]

顶部