冒泡排序:
1.比较每一对相邻的元素。如果第一个比第二个大,就交换他们两个,这步做完后,最后的元素会是最大的数。
2.针对所有的元素重复以上的步骤,除了最后一个。
3.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
实现代码:
def Bubble_sort(arr):
for i in range(1,len(arr)):
for j in range(0,len(arr)-i):
if arr[j]>arr[j+1]:
arr[j],arr[j+1]=arr[j+1],arr[j]
return arr
选择排序:
1.首先在序列中找到最小(大)元素,存放到序列的起始位置。
2.再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
实现代码:
def Sel_sort(arr):
for i in range(len(arr)):
for j in range(i+1,len(arr)):
if arr[i]>arr[j]:
arr[i],arr[j]=arr[j],arr[i]
return arr
插入排序:
1.将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
2.从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
实现代码:
def Insert_sort(arr):
for i in range(1,len(arr)):
tmp=arr[i]
for j in range(i-1,-1,-1):
if tmp<arr[j] and j>=0:
arr[j+1]=arr[j]
arr[j]=tmp
return arr
--------------------------------------------------------------------------------------未完待续---------------------------------------------------------------------------------
。
。
。
。
。
。
。
。
。
。
。
。
。
。
希尔排序:
希尔排序的整体思想是将固定间隔的几个元素之间排序,然后再缩小这个间隔。这样到最后数列就成为了基本有序数列,而前面我们讲过插入排序对基本有序数列排序效果较好。
1.计算一个增量(间隔)值
2.对元素进行增量元素进行比较,比如增量值为7,那么就对0,7,14,21…个元素进行插入排序
3.然后对1,8,15…进行排序,依次递增进行排序
4.所有元素排序完后,缩小增量比如为3,然后又重复上述第2,3步
5.最后缩小增量至1时,数列已经基本有序,最后一遍普通插入即可
实现代码:
def shell_sort(arr):
gap=len(arr)//2
while gap>=1:
for i in range(len(arr)-gap):
if arr[i]>arr[i+gap]:
arr[i],arr[i+gap]=arr[i+gap],arr[i]
if gap==1:
arr2=Insert_sort(arr)
gap //=2
return arr2