3、--------------------直接插入排序-------------------------------- 2.def insert_sort(data_list): 3. #遍历数组中的所有元素,其中0号索引元素默认已排序,因此从1开始 4. for x in range(1, len(data_list)): 5. #将该元素与已排序好的前序数组依次比较,如果该元素小,则交换 6. #range(x-1,-1,-1):从x-1倒序循环到0 7. for i in range(x-1, -1, -1): 8. #判断:如果符合
5、程中,相同的元素可能在各自的插入排序中移动,所以希尔排序是不稳定的。Python源代码:1.#-------------------------希尔排序------------------------------- 2.def insert_shell(data_list): 3. #初始化step值,此处利用序列长度的一半为其赋值 4. group = int(len(data_list)/2) 5. #第一层循环:依次改变group值对列表进行分组 6. while group > 0: 7. #下面:利用直接插入排序的思想对分组数据
6、进行排序 8. #range(group,len(data_list)):从group开始 9. for i in range(group, len(data_list)): 10. #range(x-group,-1,-group):从x-group开始与选定元素开始倒序比较,每个比较元素之间间隔group 11. for j in range(i-group, -1, -group): 12. #如果该组当中两个元素满足交换条件,则进行交换 13. if data_list[j] > data_list[j+group]: 14. t