排序(交换排序)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序(交换排序)相关的知识,希望对你有一定的参考价值。
所谓交换排序就是依次比较两个相邻元素的大小并根据需求进行交换,这里有两种交换排序。
1、冒泡排序、冒泡排序就是依次比较两个相邻数字,把两个数字中较大的放后边(这是从小到大排序,如果是降序排列,则反过来),这样一轮跑下来最大的那个数字就放到了最后,所谓冒泡就是每次都拿到当前剩余数字中最大的那个并依次放置在其应该放在的位置。这里能看出来也不需要开新空间,但是每跑一趟都需要把剩下的数字都玩儿一遍,时间效率很大,也是n平方了。
2、快速排序,调用了递归的思想,每次在序列中找到一个数字,这个数字后续处理时要求找到一个位置,在这个位置左边的数字都比他小,而右边又都比他大,然后再对左边和右边依次进行处理。
上代码。
冒泡排序不给了,比较简单,直接给快速排序。
def quickSort(numList,left,right):
if left >= right:
return
temp = numList[left]
i = left
j = right
while i != j:
while i < j and numList[j] >= temp:
j -= 1
while i < j and numList[i] <= temp:
i += 1
if i < j:
numList[i],numList[j] = numList[j],numList[i]
numList[left] = numList[i]
numList[i] = temp
quickSort(numList,left,i - 1)
quickSort(numList,i + 1,right)
if __name__ == ‘__main__‘:
numList = [32, 57, 69, 0, 2, 18, 100, 7]
quickSort(numList,0,len(numList) - 1)
print ‘快速排序‘
for x in numList:
print x,
print ‘\n‘
import random
a = []
for i in range(100):
temp = random.randint(0, 100)
while True:
for x in range(len(a)):
if a[x] == temp:
temp = random.randint(0, 100)
break
else:
a.append(temp)
break
# a.append(random.randint(0,100))
for item in a:
print item,
print ‘\n‘
quickSort(a,0,len(a) - 1)
for x in a:
print x,
print ‘\n‘
以上是关于排序(交换排序)的主要内容,如果未能解决你的问题,请参考以下文章