本篇主要学习一下Python几种基本算法排序,冒泡排序,选择排序,插入排序,希尔排序,快速排序,堆排序等等。用博客记录一下,方便后面需要的时候过来复习,有新的思路也会慢慢过来修改更新!
冒泡法排序
冒泡法排序是一种简单的排序算法,它的原理是,重复的遍历要排序的列表,一次比较2个元素,如果他们的排序错误就把他们的位置交换过来,直到没有需要再交换的元素,表明该列表已经排序完成。
代码如下:
li=[10,6,4,5,7,9,2,1,3,8]
for i in range(len(li)-1): #列表中一共有10个数,两两比较,因此实际次数为9
for j in range(len(li)-1-i): #每次冒泡确认一个最大值,因此只需要n-1冒泡
if li[j] > li[j+1]: #判断前面的数是否大于后面的数
li[j],li[j+1] = li[j+1],li[j] #如果大于则交换位置
print(li)
处理过程:
[6, 10, 4, 5, 7, 9, 2, 1, 3, 8]
[6, 4, 10, 5, 7, 9, 2, 1, 3, 8]
[6, 4, 5, 10, 7, 9, 2, 1, 3, 8]
[6, 4, 5, 7, 10, 9, 2, 1, 3, 8]
[6, 4, 5, 7, 9, 10, 2, 1, 3, 8]
[6, 4, 5, 7, 9, 2, 10, 1, 3, 8]
[6, 4, 5, 7, 9, 2, 1, 10, 3, 8]
[6, 4, 5, 7, 9, 2, 1, 3, 10, 8]
[6, 4, 5, 7, 9, 2, 1, 3, 8, 10]
[4, 6, 5, 7, 9, 2, 1, 3, 8, 10]
[4, 5, 6, 7, 9, 2, 1, 3, 8, 10]
[4, 5, 6, 7, 2, 9, 1, 3, 8, 10]
[4, 5, 6, 7, 2, 1, 9, 3, 8, 10]
[4, 5, 6, 7, 2, 1, 3, 9, 8, 10]
[4, 5, 6, 7, 2, 1, 3, 8, 9, 10]
[4, 5, 6, 2, 7, 1, 3, 8, 9, 10]
[4, 5, 6, 2, 1, 7, 3, 8, 9, 10]
[4, 5, 6, 2, 1, 3, 7, 8, 9, 10]
[4, 5, 2, 6, 1, 3, 7, 8, 9, 10]
[4, 5, 2, 1, 6, 3, 7, 8, 9, 10]
[4, 5, 2, 1, 3, 6, 7, 8, 9, 10]
[4, 2, 5, 1, 3, 6, 7, 8, 9, 10]
[4, 2, 1, 5, 3, 6, 7, 8, 9, 10]
[4, 2, 1, 3, 5, 6, 7, 8, 9, 10]
[2, 4, 1, 3, 5, 6, 7, 8, 9, 10]
[2, 1, 4, 3, 5, 6, 7, 8, 9, 10]
[2, 1, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
最后结果:
PS D:\Software\python_object>
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
PS D:\Software\python_object>
选择排序
选择排序也是简单排序的一种,它的原理是将序列中按最小的元素一个个取出来然后进行排序,直到所有元素排序完毕。结果分为“升序”和“降序”。
”降序“ :
list= [1,7,3,9,2,4,5,6,8]
n = len(list)
for i in range(n):
max = i
for j in range(i+1,n):
if list[max] < list[j]:
max = j
if i != max:
tmp = list[i]
list[i] = list[max]
list[max] = tmp
print(list)
结果如下:
PS D:\Software\python_object>
[9, 8, 7, 6, 5, 4, 3, 2, 1]
PS D:\Software\python_object>
“升序” :
list= [1,7,3,9,2,4,5,6,8]
n = len(list)
for i in range(0, n):
min = i
for j in range(i + 1, n):
if list[j] < list[min]:
min = j
list[min], list[i] = list[i], list[min]
print(list)
结果如下:
PS D:\Software\python_object>
[1, 2, 4, 5, 6, 3, 8, 7, 9]
PS D:\Software\python_object>