简单排序---插入排序

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

  

猜你喜欢

转载自www.cnblogs.com/wanyp/p/10095322.html
今日推荐