# -*- coding:utf-8 -*- # 01. # 题目 通过插入排序写出排序算法 # 02. # 例子 9,8,7,6,5,4,3,2,1 # 03. # 题目假设 # 04. # 重要问题 # 05. # 直觉 # 06. # 解决方法的可能性 # 07. # 解决方案 # 08. # 数据结构 # 09. # 算法复杂度:时间空间 def insert_sort(input_list): #求列表长度 len_of_list = len(input_list) print '列表长度是%s' %(len_of_list) if not input_list: print '输入异常,返回none' return elif len_of_list == 1: print '列表长度是1,返回原列表' return input_list else: #将每个元素check_value都和前边的有序数列的元素倒序进行比较,如果check_value大于此时的元素find_value, # find_value的元素都后移一位,check_value的元素插入此位置即可 # for check_index in range(1,len_of_list): print 'step1:比较' print '将索引%s和前边的所有元素进行比较' %check_index #倒序比较,直到发现这个元素(这个元素是第一个比比较的元素不大的元素) find_index = check_index -1 print '索引%s元素的前一个元素是索引%s' %(check_index,find_index) print '将索引%s的元素和索引是%s的元素进行比较,并且要求%s>=0' %(check_index,find_index,find_index) while input_list[check_index] < input_list[find_index] and find_index>=0 : find_index = find_index -1 print '' find_index = find_index + 1 print '找到的索引%s的元素复合条件' %find_index #将find_index到check_index的元素都想后移动一位,然后将check_index的值放到当前find_index索引的位置 #移动...... #开始移动 print 'step2:移动' print '' print '索引%s到%s的元素都后移一位,并将索引是index的元素移到%s的位置' %(check_index-1,find_index-1,check_index-1) tmp = input_list[check_index] for index in range(check_index-1,find_index-1,-1): input_list[index+1] = input_list[index] input_list[find_index] = tmp return input_list input_list = [6,6,3,2,2,4] print insert_sort(input_list)