一. 插入排序—直接插入排序
思路:将待插入元素一个个插入到已有序部分
#直接插入排序
def insertSort(arr):
if len(arr) <= 1:
return
for i in range(1,len(arr)):
temp = arr[i]
j = i
while j > 0 and arr[j]>temp:
arr[j] = arr[j-1]
j -= 1
a[j] = temp
二. 插入排序—希尔排序
思路:是直接插入排序算法的一种更高效的改进版本。先将待排序序列按某个增量d(n/2,n为要排序数的个数)分成若干组子序列,对每组使用直接插入法排序,然后再用一个较小的增量(d/2)对它进行分组,重复直接插入排序,继续减少增量直至为1,算法终止
#希尔排序
def shellSort(arr):
if len(arr) <= 1:
return
Increment = len(arr)/2
while Increment > 0:
for i in range(Increment,len(arr)):
temp = arr[i]
j = i
while j>0 and arr[j-Increment] > temp:
arr[j] = arr[j-Increment]
j -= Increment
arr[j] = temp
Increment /= 2
三. 选择排序—简单选择排序
思路:每趟从待排序部分选一个最小值,与待排序部分的第一个元素交换位置