关闭

插入排序

86人阅读 评论(0) 收藏 举报
分类:

插入排序原址排序输入的数,算法在数组A中重排这些数,

在任何时候,最多只有常数个数字存储在数组外部。

插入排序是原地排序,基本无需外部空间。

从第二个元素开始,依次遍历全部数组。

其中,前半截为已排好的有序数组而后半截为待排序的无序数组。

每个元素从后向前依次对比,直到找到自己的位置。

插入排序是稳定排序。

def insert_sort(list1):
    for j in range(1, len(list1)):  #从第2个元素开始遍历,依次将元素放在指定位置
        key = list1[j]    #记录当前值
        i = j - 1         #将当前值从当前位置之前逆序依次比较
        while i>=0 and list1[i]>key:  #如果当前值小于之前值,则说明当前值位于之前值的前面
            list1[i+1] = list1[i]   #将大于当前值的元素依次后移一位,给当前值留位置
            i -= 1
        list1[i+1] = key   #将当前值插入在第一个小于它的值的后面
    return list1


if __name__ == "__main__":
    list1 = [3,2,4,5,6,7]
    list2 = ["wang", "zhe", "tian", "jin", "da", "xue"]
    ordered_list1 = insert_sort(list1)
    ordered_list2 = insert_sort(list2)
    print ordered_list1 #[2, 3, 4, 5, 6, 7]
    print ordered_list2 #['da', 'jin', 'tian', 'wang', 'xue', 'zhe']


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8351次
    • 积分:283
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:0篇
    • 译文:2篇
    • 评论:1条
    最新评论