您的位置:首页 > 理论基础 > 数据结构算法

python 下的数据结构与算法---6:6大排序算法

2016-03-26 20:22 711 查看
顶先最后推荐:哈哈,意思是放到顶部强调其重要性,但是应该我总结的六种算法看完了后再看的一篇醍醐灌顶的文章

一:冒泡排序(Bubble Sort)

  原理:假设有n个数,第一轮时:从第一个元素开始,与相邻的元素比较,如果前面的元素小就交换,直到第n-1个元素时,这样的结果是将最大的元素放到了最后,同理,第二轮还是从第一个元素开始比较,直到第n-2个元素,这样能够把剩下的n-1个数中的最大的数放到第n-1的位置,一直这样进行n-1轮就能够完成排序。

import random
def partition(seq, start, stop):
pivotIndex = start
pivot = seq[pivotIndex]
i = start+1
j = stop-1
while i <= j:
while pivot > seq[i]:
i+=1
while pivot < seq[j]:
j-=1
if i < j:
seq[j],seq[i] = seq[i],seq[j]
i+=1
j-=1
seq[pivotIndex],seq[j] = seq[j],pivot
return j

def quicksortRecursively(seq, start, stop):
if start >= stop-1:
return
pivotIndex = partition(seq, start, stop)
quicksortRecursively(seq, start, pivotIndex)
quicksortRecursively(seq, pivotIndex+1, stop)

def quicksort(seq):
# randomize the sequence first
for i in range(len(seq)):
j = random.randint(0,len(seq)-1)
seq[i],seq[j] = seq[j],seq[i]

quicksortRecursively(seq, 0, len(seq))

a=[3,4,6,8,2,1,5,9]
quicksort(a)
print(a)


快速排序
  同理可以分析出其时间复杂度为O(nlogn)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: