Python实现八大经典排序算法,八大经典排序基本思想和python实现

一.   插入排序—直接插入排序

思路:将待插入元素一个个插入到已有序部分

#直接插入排序def insertSort(arr):if len(arr)0 and arr[j]>temp:arr[j] = arr[j-1]j -= 1a[j] = temp

二.     插入排序—希尔排序

思路:是直接插入排序算法的一种更高效的改进版本。先将待排序序列按某个增量d(n/2,n为要排序数的个数)分成若干组子序列,对每组使用直接插入法排序,然后再用一个较小的增量(d/2)对它进行分组,重复直接插入排序,继续减少增量直至为1,算法终止

#希尔排序def shellSort(arr):if len(arr)0:for i in range(Increment,len(arr)):temp = arr[i]j = iwhile j>0 and arr[j-Increment] > temp:arr[j] = arr[j-Increment]j -= Incrementarr[j] = tempIncrement /= 2

 

三.   选择排序—简单选择排序

 

思路:每趟从待排序部分选一个最小值,与待排序部分的第一个元素交换位置

#简单选择排序def selectSort(arr):if len(arr)

 

四.   选择排序—堆排序

 

堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。

思路:堆排序需要两个过程,一是建立堆(完全二叉树),二是堆顶与堆的最后一个元素交换位置。堆排序会将所有的数据建成一个堆,最大的数据在堆顶,然后将堆顶数据和序列的最后一个数据交换。接下来不动最后一个数据再次重建堆,交换数据,依次下去,就可以排序所有的数据。

#堆排序def heapSort(arr):def precDown(a, i, N):child = 2 * i + 1tmp = a[i]while child

 

五.   交换排序—冒泡排序

 

思路:相邻元素进行比较决定是否交换,两两比较则最后一个元素应为最大值,对剩余部分重复至结束

#冒泡排序def bubbleSort(arr):length = len(arr)if length 1:for i in range(length-1):if arr[i] >arr[i+1]:arr[i],arr[i+1] = arr[i+1],arr[i]length -= 1

 

六.   交换排序—快速排序

 

思路:选择一个基准,将待排序序列分成都比其大和都比其小的两部分,然后对这两部分数据分别重复进行快速排序

#快速排序def quick_sort(array, l, r):if l

 

七.   归并排序

 

思路:把待排序序列分为若干个子序列,至每个子序列是有序的,然后再把有序子序列合并为整体有序序列。

#归并排序def mergeSort(arr):def Merge(left, right):i, j = 0, 0result = []while i

 

八.   基数排序

 

思路:将整数按位数切割成不同的数字,然后按每个位数分别比较。

将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。

#基数排序def bucketSort(arr, radix=10):if len(arr)

 

八大经典排序基本思想和python实现_第1张图片

 

 

排序法 平均时间 最差情形 稳定度 额外空间 备注 冒泡 O(n2) O(n2) 稳定 O(1) n小时较好 交换 O(n2) O(n2) 不稳定 O(1) n小时较好 选择 O(n2) O(n2) 不稳定 O(1) n小时较好 插入 O(n2) O(n2) 稳定 O(1) 大部分已排序时较好 基数 O(logRB) O(logRB) 稳定 O(n)

B是真数(0-9),

R是基数(个十百)

Shell O(nlogn) O(ns) 1 不稳定 O(1) s是所选分组 快速 O(nlogn) O(n2) 不稳定 O(nlogn) n大时较好 归并 O(nlogn) O(nlogn) 稳定 O(1) n大时较好 堆 O(nlogn) O(nlogn) 不稳定 O(1) n大时较好

 

上海迪士尼城堡什么时候开放 上海迪士尼11月29日 上海迪士尼高清主图 迪士尼乐园上海半价怎么买 上海迪士尼4天行程 上海迪士尼是哪个上市公司的 上海迪士尼二日票送餐券吗 疫情期上海迪士尼人多吗 女大学生起诉上海迪士尼结果 上海迪士尼乐园冰雪 大亚湾第四中学是高中吗 大亚湾区弃土 樟木头 大亚湾 比较 大亚湾法官助理做什么 广州惠州市大亚湾房地产 大亚湾电瓶车被抓怎么处理 大亚湾的海水有污染吗 大亚湾化工园区污水处理厂 大亚湾未满2年卖房 大亚湾可供房源