首页 > 编程语言 >算法学习笔记四一插入排序

算法学习笔记四一插入排序

时间:2023-12-15 23:22:45浏览次数:41  
标签:temp 示例 插入排序 元素 list 算法 四一

目录

什么是插入排序

插入排序可理解为扑克牌摸牌的过程,手中的牌为有序序列,然后随机摸一张牌,根据牌的大小插入到有序序列对应的位置。算法时间复杂度为O(n^2)

算法原理

  1. 默认列表第一个元素为基准,从第二个元素和第一个元素进行比较,并放入到相应位置。
  2. 此时前两个元素是一个有序数组,后n-2个是无序的, 再拿第三个元素依次和前两个进行比较,并放入到响应位置。
  3. 以此类推...

示例代码

# 升序排序
def insert_sort(list):
    for i in range(1, len(list)):
        j = i - 1  # 无序区元素前一个元素
        temp = list[i] #记录待排序元素的值
        while j >= 0 and list[j] > temp: # 依次和前面有序列表中元素进行比较
            list[j + 1] = list[j] # 若list[i]比前一个元素小,则元素向后挪动
            j -= 1
        list[j + 1] = temp
        print(list)
    return list

标签:temp,示例,插入排序,元素,list,算法,四一
From: https://www.cnblogs.com/chase-youth/p/17904355.html

相关文章

  • 【教3妹学编程-算法题】用邮票贴满网格图
    3妹:“你不是真正的快乐,你的笑只是你穿的保护色”2哥 :3妹还在唱五月天的歌啊,你不知道五月天假唱,现在全网都在骂呢。3妹:知道啊,可是关我什么事,这个歌的确好听啊。2哥 :嗯嗯,不错,还以为你是脑残粉,无论黑白都只管追星呢。3妹:我是只管追歌的,歌好听就行啦。2哥 :追哥?追哪个哥,难......
  • 代码随想录算法训练营第三天|203.移除链表元素、707.设计链表、206.反转链表
    LeetCode 203.移除链表元素题目链接:203.移除链表元素原链表删除元素(需要区分头节点和非头结点)使用虚拟头节点,统一链表操作(注意:新链表头结点是虚拟头节点的下一节点) LetCode707.设计链表题目链接:707.设计链表注意:头节点采用虚拟头节点,使得链表操作具有一致性!!!单链......
  • 算法学习笔记三一选择排序
    目录什么是选择排序算法原理示例代码什么是选择排序选择排序的主要思想是(升序为例):第一次从待排序的数据元素中选出最小的一个元素,和数组的起始位置元素进行交换,然后再从剩余的未排序元素中寻找到最小元素,然后和未排序的序列的第一个元素进行交换。每次在未排序序列中选择一个最......
  • 算法学习Day3虚拟头指针,设计链表,反转链表
    Day3虚拟头指针,设计链表,反转链表ByHQWQF2023/12/15笔记203.移除链表元素给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。解法:虚拟头指针看起来非常简单,但是由于如果直接对原始的链表进行操作,如果头节点的v......
  • 双指针算法概念
    "双指针"是一种在数组或链表中使用两个指针来进行操作的技术。这两个指针通常被称为“快”指针和“慢”指针,或者“左”指针和“右”指针,根据其在数据结构中的移动速度或位置来命名。双指针算法在处理数组或链表的问题中非常有效,可以帮助我们以更优的时间复杂度解决问题。常见的应......
  • 代码随想录算法训练营第三天 | 链表理论基础,203.移除链表元素,707.设计链表,206.反转链
    一、链表理论基础学习:1.链表定义线性表的一种存储方式,在逻辑上连续的数据在物理存储中可以不连续。classListNode{intval;ListNodenext;ListNode(){}ListNode(intval){this.val=val;this.next=null;}ListN......
  • 代码随想录算法训练营Day3 | 203.移除链表元素、707.设计链表、206.翻转链表
    这三道题都不涉及什么难以理解的算法,是对链表基础知识的一个复习巩固对于有数据结构基础的同学来说这个没有什么难度但是,写代码的过程中,我明显感觉到,我需要更加完善和统一的代码风格,作为一个前OIer,我的c和cpp混用的情况在基础数据结构的封装层面造成了不小的混乱!我需要去补充c......
  • 代码随想录算法训练营Day2 |977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵
    明天四级考试了,时间非常紧张,好在这些数组相关的算法题很久之前就做过,思路上是不存在不理解的地方的。有序数组的平方是一道非常直观的双指针方法的应用,实现过程之中没有什么坑。长度最小的子数组就是我们的滑动窗口方法了,题目不难,但是这种处理方式有着很深刻的背景,之后还会遇到......
  • 文心一言 VS 讯飞星火 VS chatgpt (157)-- 算法导论12.3 4题
    四、用go语言,删除操作可交换吗?可交换的含义是,先删除x再删除y留下的结果树与先除y再删除x留下的结果树完全一样。如果是,说明为什么?否则,给出一个反例。文心一言:在Go语言中,删除操作是不可交换的。这意味着先删除节点x再删除节点y与先删除节点y再删除节点x留下的......
  • CSS 优先级算法
    CSS的优先级是根据样式声明的特殊性值来判断的。选择器的特殊性值分为四个等级,如下:(1)标签内选择符x,0,0,0(2)ID选择符0,x,0,0(3)class选择符/属性选择符/伪类选择符0,0,x,0(4)元素和伪元素选择符0,0,0,x计算方法:(1)每个等级的初始值为0(2)每个等级的叠加为选择器出现的次数相......