Python 排序算法的实现

冒泡排序:

1 def bubble(l):
2     length = len(l)
3     for i in range(length):
4         for j in range(i+1, length):
5             if l[i] > l[j]:
6                 l[i], l[j] = l[j], l[i]
7     print l

 

选择排序:

1 def select(l):
2     length = len(l)
3     for i in range(length):
4         minn = i
5         for j in range(i+1, length):
6             if l[j] < l[minn]:
7                 minn = j
8         l[i], l[minn] = l[minn], l[i]
9     print l

 

插入排序:

def insert(l):
    length = len(l)
    for i in range(1,length):
        key = l[i]
        j = i - 1
        while j > 0 and l[j] > key:
            l[j+1] = l[j]
            j -= 1
        l[j+1] = key
    print l

 

快速排序:

(1)传统版

 1 def quick(l, left, right):
 2     if left < right:
 3         pivot = partition(l, left, right)
 4         quick(l, left, pivot - 1)
 5         quick(l, pivot + 1, right)
 6 
 7 
 8 def partition(l, left, right):
 9     pivot = l[left]
10     i, j = left, right
11     while i < j:
12         while i < j and l[j] >= pivot:
13             j -= 1
14         if i < j:
15             l[i] = l[j]
16             i += 1
17         while i < j and l[i] <= pivot:
18             i += 1
19         if i < j:
20             l[j] = l[i]
21             j -= 1
22     l[i] = pivot
23     return i

 

(2)简易版

def quick_simple(l):
    if len(l) > 1:
        return quick_simple( [i for i in l[1:] if i < l[0]] ) + l[0:1] + quick_simple( [j for j in l[1:] if j >= l[0]] )
    else:
        return l

 

未完待续...

posted @ 2014-08-06 19:23  EthanChou  阅读(152)  评论(0)    收藏  举报