排序算法(二):插入排序

漫谈经典排序算法:二、各种插入排序解析及性能比较 1、序言 这是《漫谈经典排序算法系列》第二篇,解析了各种插入排序算法。主要包括:直接插入排序、折半插入排序、表插入排序、希尔插入排序。每一种算法的开头都叙述了引出该算法的原因,然后给出代码,最后分析算法效率及和其他插入排序相比,优劣在哪里。 各种排序算法的解析请参考如下: 阅读详情

插入排序是一个对少量元素进行排序的有效算法。插入排序和很多人打牌时,整理手中的牌时的做法差不多。在开始摸牌时,我们的左手是空的,接着,一次从桌上摸起一张牌,为了找到这张牌的正确位置,我们需要把这张牌和已有的牌一一做对比。
代码实现:

def insert_sort(data):
    i = 1
    total = len(data)
    while i < total:
        current = data[i]

        if current > data[i-1]:
            i = i + 1
            continue
        else:
            j = i - 1

            while j >= 0:
                if data[j] < current:
                    break

                if data[j] > current:
                    data[j+1] = data[j]

                j -= 1

            data[j+1] = current

            i += 1

    return data

插入排序的核心思路是:
前一个位置的数字和当前位置上的数字做对比,如果当前位置大于前一个位置,那就不动,如果比前一个位置上的数字小,那就把前一个位置上的数字后移,继续做比较,直到找到当前位置上的数字的正确位置,然后赋值。

插入排序和冒泡排序的区别是,冒泡排序是相邻2个位置上的数字做对比,然后两两交换位置,插入排序是前面位置上的数字和当前位置上的数字做对比。

使用C#详解常用排序算法(二):插入排序(Insert Sort) 结合代码和运行输出详细讲解插入排序的排序过程 阅读详情

相关推荐

杂记(二) 六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序(详尽)

1.从第一个元素开始,该元素可以认为已经被排序2.取下一个元素tem,从已排序的元素序列从后往前扫描3.如果该元素大于tem,则将该元素移到下一位4.重复步骤3,直到找到已排序元素中小于等于tem的元素5.tem插入到该元素的后面,如果已排序所有元素都大于tem,则将tem插入到下标为0的位置6.重复步骤2~5在待排序的元素中,假设前n-1个元素已有序,现将第n个元素插入到前面已经排好的序列中,使得前n个元素有序。按照此法对所有元素进行插入,直到整个序列有序。

专注于人工智能学习,总结 1101

排序算法二:二分法插入排序

声明:引用请注明出处http://blog.youkuaiyun.com/finish_dream/article/details/70186029 引言 上一篇文章中介绍到插入排序中有三种具体排序方法,分别是:直接插入排序,二分法插入排序,希尔插入排序。上一篇《排序算法一:直接插入排序 》中已经介绍了直接插入排序,这篇文章将主要介绍二分法插入排序。 排序相...

weixin_30496751的博客 840

数据结构与算法(二)排序算法详解及实现:选择排序、插入排序、希尔排序、归并排序、快速排序和堆排序

一、测试模板类 在学习排序算法的过程中,初步写了一个测试用的模板类,类的方法中包括排序的算法(待实现),类中目前只实现了小于比较和交换等基础的功能,源代码如下,后续会根据排序算法的不同,实现在模板类的排序方法里。 //sort1.h #pragma once #include <iostream> template<class T> class arrSort { public: arrSort(T* arr1, int length, bool isSorted = false)

px597的博客 664

排序算法(二):插入排序

目录 一、算法原理 二、算法分析 1、时间复杂度分析() 2、算法稳定性分析(稳定) 三、算法实现 一、算法原理 插入排序,对于少量元素的排序,是一种有效的算法。 插入排序的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌正确的位置,我们从右向左将它...

非止。的专栏 284

算法:排序算法之插入排序

在前一篇《算法:排序算法之冒泡排序》中,我们已经对冒泡排序做了解析说明,本节我们将继续对排序算法(插入排序)进行相关解析说明。 排序算法系列目录说明 冒泡排序(Bubble Sort) 插入排序(Insertion Sort) 希尔排序(Shell Sort) 选择排序(Selection Sort) 快速排序(Quick Sort) 归并排序(Merge Sort) 堆排序(Hea...

7-SEVENS 1522

排序算法二:二分(折半)插入排序

在我的博文《“主宰世界”的10种算法短评》中给出的首个算法就是高效的排序算法。本文将对排序算法做一个全面的梳理,从最简单的“冒泡”到高效的堆排序等。上一篇博文《排序算法一:直接插入排序》讲述了直接插入排序,本文讲述另一种插入排序算法:二分(折半)插入排序。

ZhangPY的专栏 1万+

C语言经典排序算法实现(二):选择排序、插入排序、希尔排序、归并排序、快速排序

复习冒泡排序 C语言经典排序算法实现(一):冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。 过程演示: 实例 #include <stdio.h> void bubble_sort(int arr[], int len) { int i, j, temp; for (i = 0; i < len - 1; i++) fo

源代码杀手的博客 424

联想Y9000P安装Ubuntu20.04记录

联想Y9000P 2022安装Ubuntu20.04问题记录

Legendyyy的博客 7119

python冒泡排序_经典排序算法和python详解(二):冒泡排序、双向冒泡排序、插入排序...

本文源自微信公众号【Python编程和深度学习】原文链接:经典排序算法和python详解(二):冒泡排序、双向冒泡排序、插入排序和希尔排序,欢迎扫码关注鸭!目录一、冒泡排序(Bubble Sort)二、冒泡排序法改进三、双向冒泡排序法四、插入排序五、希尔排序(插入排序改进)一、冒泡排序(Bubble Sort)冒泡排序是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,...

weixin_39736047的博客 1241

EDKII实战:手把手调试PciHostBridge.c,看UEFI如何分配你的PCIe设备资源(IO/Memory空间)

本文深入解析EDKII中PciHostBridge.c模块的工作原理,详细指导如何调试PCIe设备资源分配(IO/Memory空间)。通过实战案例展示UEFI环境下Root Bridge初始化、地址空间转换及协议安装等核心流程,提供常见问题排查方法与性能优化建议,帮助开发者解决PCIe设备兼容性问题。

weixin_29201933的博客 209

(巩固基础篇)排序算法:①插入排序②希尔排序③冒泡排序④选择排序⑤快速排序

排序算法:①插入排序②希尔排序③冒泡排序④选择排序⑤快速排序

一捆呆在ac篮子里的好葱, 876

鸿蒙日历组件进阶:教你打造个性化日程管理界面(支持月份切换)

本文深入探讨了鸿蒙应用开发中自定义日历组件的构建方法。通过详解基于Grid的布局设计、核心日期算法、月份切换逻辑以及事件管理集成,指导开发者打造支持个性化日程管理的高性能日历界面,提升应用交互体验。

weixin_29207149的博客 67

python 冒泡排序_经典排序算法和python详解(二):冒泡排序、双向冒泡排序、插入排序...

本文源自微信公众号【Python编程和深度学习】原文链接:经典排序算法和python详解(二):冒泡排序、双向冒泡排序、插入排序和希尔排序,欢迎扫码关注鸭!目录一、冒泡排序(Bubble Sort)二、冒泡排序法改进三、双向冒泡排序法四、插入排序五、希尔排序(插入排序改进)一、冒泡排序(Bubble Sort)冒泡排序是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,...

weixin_33308579的博客 416

AMD MI355X与NVIDIA B200在GLM5.2大模型推理性能与成本对比分析

在 AI 推理硬件选型中,成本与性能的平衡一直是技术决策的核心难点。AMD 最新发布的 CDNA 4 架构 MI355X 加速卡与 NVIDIA Blackwell 架构的 B200 在 GLM5.2 这类千亿参数大模型上的表现,直接关系到企业部署私有化模型或提供推理服务的经济性。实际测试数据显示,在 32 tok/s/user 的交互性设定下,单张 MI355X 能够达到 1369 tok/s 的吞吐量,虽然略低于 B200 的 1756 tok/s,但每百万 token 成本仅为 0.30 美元,比 B

weixin_28221501的博客 295

PDDL入门

PDDL的组成部分 Objects:对象,世界上我们感兴趣的事物。 Predicates:谓词,我们感兴趣的事实(例如对象的属性),可以为真,也可以为假。 An initial state:初始化状态,我们开始所处的世界状态,即开始时为真的事物。 Goal specification:目标状态,我们想要结束的世界的状态,即我们希望最终成为真实的事情。 Actions/Operators:动作/操作,改变世界状态的方式,即发生的事情改变了事实。 PDDL语法 PDDL 文件的扩展名通常是.pddl 要

工控小白2021的博客 4823

排序算法之插入排序(python实现)

插入排序的基本思想:每步将一个待排序的对象,按其关键码大小,插入到前面已经排好序的一组对象的适当位置上,直到对象全部插入位置。即边插入边排序,保证子序列中随时都是排好序的。

qq_43129538的博客 4536

手把手教你学Simulink——基于Simulink的固态变压器(SST)多级协同控制

摘要:本文详细介绍了基于Simulink的固态变压器(SST)多级协同控制方法。SST作为新一代智能电网核心设备,通过AC-DC整流、DC-DC隔离和DC-AC逆变三级架构实现电能高效转换。针对多级耦合难题,提出能量-功率协同控制策略:纵向解耦电压环与功率前馈,横向联动级间功率指令。在Simulink中搭建10kV/400V系统模型,实现直流母线电压波动<2%的动态性能。特别设计了负载突变时的三级协同机制,通过虚拟惯性算法和前馈控制实现快速响应。文章包含完整的建模步骤、控制推导和参数设置,为电力电子工

MHD0815的博客 195
上一篇: 排序算法(一):冒泡排序
下一篇: 开源大模型api接口调用
python_tty
博客等级 码龄12年 226粉丝 242原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值