簡單排序---插入排序
阿新 • • 發佈:2018-12-10
# -*- 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)