python 实现插入排序冒泡排序归并排序

Posted Jean_V

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 实现插入排序冒泡排序归并排序相关的知识,希望对你有一定的参考价值。

  1 def InsertSort(A):
  2 	\'\'\'插入排序算法:传入一个list,对list中的数字进行排序\'\'\'
  3 	print(\'插入排序前list元素顺序:\',A)
  4 	length=len(A)
  5 	for i  in range(1,length):#从第二个开始
  6 		key=A[i]
  7 		j=i-1
  8 		while j>=0 and A[j]>key:
  9 			A[j+1]=A[j]
 10 			j=j-1
 11 		A[j+1]=key
 12 	print(\'插入排序后的list元素顺序:\',A)
 13 	#插入排序时间复杂度:n^2,空间复杂度:1,相同元素保持相对不变性(相对位置不变)
 14 
 15 def BableSort(A):
 16     \'\'\'冒泡排序算法:传入一个List,对list中的元素进行排序\'\'\'
 17     print(\'冒泡排序前的顺序:\',A)
 18     length=len(A)
 19     for i in range(1,length):
 20         #rang=range(i)
 21         #for j in reversed(rang):
 22         for j in range(i,0,-1): #range逆序遍历
 23             if A[j-1]> A[j]:
 24                 temp=A[j]
 25                 A[j]=A[j-1]
 26                 A[j-1]=temp
 27 
 28     print(\'冒泡排序后的顺序:\',A)
 29     # 冒泡排序时间复杂度为:n^2,空间复杂度1,相同元素保持相对不变性
 30 
 31 # 归并排序,传入一个list,对list元素进行排序
 32 def MergeSort(alist):
 33     print("Splitting ",alist)
 34     if len(alist)>1:
 35         mid = len(alist)//2#精确除法,取小于等于结果的最大整数,相当于对结果进行向下取整
 36         lefthalf = alist[:mid]
 37         righthalf = alist[mid:]
 38 
 39         MergeSort(lefthalf)#递归调用左半部分
 40         MergeSort(righthalf)#递归调用右半部分
 41 
 42         #合并过程
 43         i=0
 44         j=0
 45         k=0
 46         while i < len(lefthalf) and j < len(righthalf):
 47             if lefthalf[i] < righthalf[j]:
 48                 alist[k]=lefthalf[i]
 49                 i=i+1
 50             else:
 51                 alist[k]=righthalf[j]
 52                 j=j+1
 53             k=k+1
 54 
 55         while i < len(lefthalf):
 56             alist[k]=lefthalf[i]
 57             i=i+1
 58             k=k+1
 59 
 60         while j < len(righthalf):
 61             alist[k]=righthalf[j]
 62             j=j+1
 63             k=k+1
 64     print("Merging ",alist)
 65     # 归并排序算法时间复杂度:n*lgn,空间复杂度:n,相同元素保持顺序不变性
 66 
 67 
 68 if __name__==\'__main__\':
 69     listA=[1,5,7,3,4,6,7,8,9,9,15,10,4]
 70     alist = [54,26,93,17,77,31,44,55,20]
 71     #InsertSort(listA)
 72     #BableSort(listA)
 73     MergeSort(alist)

mergesortA       mergesortB

 

参考:http://interactivepython.org/courselib/static/pythonds/SortSearch/TheMergeSort.html

以上是关于python 实现插入排序冒泡排序归并排序的主要内容,如果未能解决你的问题,请参考以下文章

冒泡选择插入归并希尔等排序算法的Python实现

冒泡选择插入希尔归并快速排序等python实现

C# 各种内部排序方法的实现(直接插入排序希尔排序冒泡排序快速排序直接选择排序堆排序归并排序基数排序)

C# 各种内部排序方法的实现(直接插入排序希尔排序冒泡排序快速排序直接选择排序堆排序归并排序基数排序)

八大排序算法C语言过程图解+代码实现(插入,希尔,选择,堆排,冒泡,快排,归并,计数)

js实现,归并排序,快速排序;插入排序,选择排序,冒泡排序