Python排序算法动态图形化演示(实现代码)

Posted KadyCui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python排序算法动态图形化演示(实现代码)相关的知识,希望对你有一定的参考价值。

 1、冒泡排序

冒泡排序是最简单也是最容易理解的排序方法,其原理就是重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
 1 # 冒泡排序
 2 def bubbleSort(li):
 3     n = len(li)
 4     for i in range(n-1):
 5         for j in range(n-i-1):
 6             if li[j] > li[j+1]:
 7                 li[j],li[j+1] = li[j+1],li[j]
 8 
 9 if __name__ == \'__main__\':
10     li = [3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]
11     bubbleSort(li)
12     print(li)

 

2、选择排序

基本思想:第1趟,在待排序记录r1 ~ r[n]中选出最小的记录,将它与r1交换;第2趟,在待排序记录r2 ~ r[n]中选出最小的记录,将它与r2交换;以此类推,第i趟在待排序记录r[i] ~ r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。
 1 # 选择排序
 2 def selectSort(li):
 3     n = len(li)
 4     for i in range(n):
 5         temp = i
 6         for j in range(temp,n):
 7             if li[temp] > li[j]:
 8                 li[temp],li[j] = li[j],li[temp]
 9 
10 if __name__ == \'__main__\':
11     li = [3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]
12     selectSort(li)
13     print(li)

 

3、快速排序

使用了分治法策略以及递归实现,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
 1 # 快速排序
 2 def quickSort(li):
 3     if li:
 4         mark=li[0]
 5         little=[m for m in li if m<mark]
 6         big=[x for x in li if x>mark]
 7         return quickSort(little)+[mark]+quickSort(big)
 8     else:
 9         return []
10 if __name__==\'__main__\':
11     li = [3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]
12     print(quickSort(li))

 

4、插入排序

插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。
 1 # 插入排序
 2 def insertSort(li):
 3     length = len(li)
 4     for i in range(1,length):
 5         x = li[i]
 6         for j in range(i,-1,-1):
 7             # j为当前位置,试探j-1位置
 8             if x < li[j-1]:
 9                 li[j] = li[j-1]
10             else:
11                 # 位置确定为j
12                 break
13         li[j] = x
14 
15 if __name__ == \'__main__\':
16     li = [3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]
17     insertSort(li)
18     print(li)

 

 

 

以上是关于Python排序算法动态图形化演示(实现代码)的主要内容,如果未能解决你的问题,请参考以下文章

mfc动态演示排序算法

花一个晚上时间整理,十大经典排序算法(Python版本),拿起就用

干货收藏:一文掌握十大经典排序算法(动态演示+代码)

《数据结构与算法》十大经典排序算法动图演示(2019最新Python代码)

scratch从大到小排序算法 电子学会图形化编程scratch等级考试四级真题和答案解析2019

算法漫游指北(第七篇):冒泡排序冒泡排序算法描述动图演示代码实现过程分析时间复杂度和选择排序算法描述动图演示代码实现过程分析时间复杂度