1. 程式人生 > >簡單排序---插入排序

簡單排序---插入排序

# -*- 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)