八大排序的关系及其性能比较
一、插入排序
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为 O(n^2)。
这是一个稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。
#!-*- coding:GBK -*-
def insertSort(lists):
num_length = len(lists) # 记录数组的长度
for i in range(1, num_length): # 开始循环
temp = lists[i] # 记录待插入元素
j = i - 1
while j >= 0:
if lists[j] > temp: # 与其前一个数比大小
print("insert number is: ", temp) # 显示待插入元素
lists[j + 1] = lists[j] # 满足条件,改变数组中数的位置
lists[j] = temp
print("exchange number is:", lists[j + 1]) # 显示插入的元素
print(lists, "\n") # 显示排列结果
j -= 1
return lists # 返回结果
list1 = [6,5,7,9,2,3,1,8,4] # 自定义一个数组
insertSort(list1) # 开始排列
print("\n", list1) # 显示最终结果
部分结果
其实就是将数组中的其中一个元素取出来跟前面的元素比较,如果前面的元素比较大就将两者交换(第一个元素不用比较,再前面没有元素)。比如第三个元素就跟第二第一的元素比较,以此类推。
二、希尔排序
本文内容部分取自百度内容,如有雷同部分请见谅。