当前位置:首页 > Python教程 > python技巧

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

技术分享图片
 

1、冒泡排序

冒泡排序是最简单也是最容易理解的排序方法,其原理就是重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
技术分享图片
                 1
                #
                 冒泡排序
                 2
                def
                 bubbleSort(li):

                 3     n = len(li)
 4for i in range(n-1):
 5for j in range(n-i-1):
 6if li[j] > li[j+1]:
 7                 li[j],li[j+1] = li[j+1],li[j]
 8 9if__name__ == __main__:
10     li = [3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]
11    bubbleSort(li)
12print(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)
 4for i in range(n):
 5         temp = i
 6for j in range(temp,n):
 7if li[temp] > li[j]:
 8                 li[temp],li[j] = li[j],li[temp]
 910if__name__ == __main__:
11     li = [3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]
12    selectSort(li)
13print(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]
 7return quickSort(little)+[mark]+quickSort(big)
 8else:
 9return []
10if__name__==__main__:
11     li = [3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]
12print(quickSort(li))

 

4、插入排序

插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。
技术分享图片
                 1
                #
                 插入排序
                 2
                def
                 insertSort(li):

                 3     length = len(li)
 4for i in range(1,length):
 5         x = li[i]
 6for j in range(i,-1,-1):
 7# j为当前位置,试探j-1位置 8if x < li[j-1]:
 9                 li[j] = li[j-1]
10else:
11# 位置确定为j12break13         li[j] = x
1415if__name__ == __main__:
16     li = [3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]
17    insertSort(li)
18print(li)

 

 

 

 
 
 
 

原文:https://www.cnblogs.com/kadycui/p/9771695.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐