冒泡排序和快速排序的效率比较

ぐ巨炮叔叔 提交于 2020-02-04 11:19:49

快速排序

快速排序是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数都比另外一部分的所有数都要小,然后再按这个方法对这两部分数据分别进行排序。这里初始化i=-1,p=0,r=7,j从0至7,这里有一个循环过程,就是拿序列里面的六个元素与第六个元素(基准元素)进行比较,如果元素小于基准元素,i+=1,交换list[i]和list[j]的顺序,当j=0时,就是list[0]与list[0]置换,这里不变,但是第一个子空间已经增大了一个元素,list[0]<=list[r];当j=1时,list[1]>=list[r],这时不交换任何位置,但第二个子空间会随着j的增大而增加一个元素,这时的第三个子空间已经减少了两个元素了。依次的当j=6时,list[6]>=list[r],不交换任何位置,而第三个子空间已经没有任何元素了。

def quicksort(list,p,r):
	if p<r:
		q=partion(list,p,r)
		quicksort(list,p,q)
		quicksort(list,q+1,r)
def partion(list,p,r):
	i=p-1
	for j in range(p,r):
		if list[j]<=list[r]:
			i+=1
			list[i],list[j]=list[j],list[i]
	list[i+1],list[r]=list[r],list[i+1]
	return i
list1=[22,10,40,32,12,35]
quicksort(list1,0,len(list1)-1)
print (list1)

冒泡排序

先用前两个数比较大小,然后(n-1),(n-1)两两排序,把小的放在前面然后大的继续跟后面比较一直往后排直到遇到比这个数大的。

n=[9,6,10,4,8,1]
print(len(n))
for i in range(len(n)-1):
    for y in range(len(n)-1):
        if n[y] > n[y + 1]:
            n[y], n[y + 1] = n[y + 1], n[y]

print(n)

如果数字只有几个的话两者比较不是很明显,但数字过多的话快速排序的效率会比冒泡排序效率更高。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!