提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、 冒泡排序
1. 算法思想
冒泡排序就是从左往右或者从右往左,方向不确定,相互比较,比较的大小也不确定。拿升序排序来说,从左往右相邻两个元素相互比较,如果左边的元素比右边的元素大,则交换两元素,否则则不交换。
2.代码实现
for k in range(100):
li = [random.randrange(i * 10) for i in range(1, 10)]
for i in range(len(li)):
for j in range(len(li) - i - 1):
if (li[j] > li[j + 1]):
li[j], li[j + 1] = li[j + 1], li[j]
print(li)
3. 运行结果
二、选择排序
1. 算法思想
每次从序列中选择一个最值,然后置于序列待排部分的第一个或者最后一个位置。拿升序来说,可以从左往右遍历待排序列,然后记录最大值的下标,遍历到待排序列的末尾,然后交换待排序列末尾元素和最值元素的位置,依此类推。
2. 代码实现
for k in range(100):
li = [random.randrange(i * 10) for i in range(1, 10)]
for i in range(len(li)):
index=0
for j in range(len(li)-i):
if(li[j]>li[index]):
index=j
li[len(li)-i-1],li[index]=li[index],li[len(li)-i-1]
print(li)
3. 运行结果
三、快速排序
1.算法思想
快速排序的核心思想也是分治法,分而治之。它的实现方式是每次从序列中选出一个基准值,其他数依次和基准值做比较,比基准值大的放右边,比基准值小的放左边,然后再对左边和右边的两组数分别选出一个基准值,进行同样的比较移动,重复步骤,直到最后都变成单个元素,整个数组就成了有序的序列。
2.代码实现
# 快速排序
# 实现快速排序
def partion(start, end):
while start < end:
while start < end and li[end] > li[start]:
end -= 1
if (start < end):
li[end], li[start] = li[start], li[end]
start += 1
while start < end and li[end] > li[start]:
start += 1
if (start < end):
li[start], li[end] = li[end], li[start]
end -= 1
return start
# 递归调用快速排序
def quickSort(start, end):
if start < end:
mid = partion(start, end)
quickSort(start, mid - 1)
quickSort(mid + 1, end)
for k in range(10):
li = [random.randrange(i * 10) for i in range(1, 10)]
print("排序前:", li)
start, end = 0, len(li) - 1
quickSort(start, end)
print("排序后:", li)
3.运行结果
总结
本文只左简单介绍了三种最常用的简单排序算法的基本思想和Python实现方式,更多排序算法可以参考博文十大排序算法