关于 插入排序 算法

排序算法——插入排序 目录 🎨基本介绍 🎹算法思想 🏸实例 🎠思路分析 🪁代码实现 🛹算法性能分析 🚀时间复杂度 🛴空间复杂度 🛸稳定性 🎨基本介绍 插入式排序属于内部排序法,是对待排序的元素以插入的方式寻找该元素的适当位置,以达到排序的目的。 🎹算法思想 插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,在有序表中从后往前进行比较,将它插入到有 阅读详情

       基本原理概括为:“从未排序的队列中取一个值插入到已排好序的队列中的恰当位置!”

     至于其中的所谓的队列就是存放带排序数组的前半部分和后半部分了,前面的是我们已经排好序的,后边的是待排序的部分;每次通过数组下标的移动来取放数据;

 代码:

#include <cstdlib>
#include <iostream>


using namespace std;


int main()
{
    int arr[10]={3,4,1,9,7,0,6,5,8,2};
    
    cout<<"排序前的数组的值为:";
    for(int b=0;b<10;b++)
    {
            cout<<arr[b]<<" ";
            }
    cout<<endl;
    
    int key;
    for(int i=1;i<10;i++)
    {
            key=arr[i];
            int j=i-1;
            for(;;)
            {
                           if(arr[j]>key&&j>=0)  // 一定要把J的范围限制在大于等于0,如果没有等于0,则会出现错误! 
                           {
                                         arr[j+1]=arr[j];
                                         j=j-1;
                                         //cout<<"j="<<j<<endl; 
                                         }
                           else break;  //如果不满足条件则退出,说明此时已经找到了key要插入的位置; 
                           }
            arr[j+1]=key;
            
    }
     cout<<"排序后的数组的值为:";
     for(int a=0;a<10;a++)
     { 
             cout<<arr[a]<<"  ";
             } 
             
    system("PAUSE");
    return 0;
}

当然把上边的for循环改成while循环也许会更好;在这里只记录一下大致的思想!


Cadence仿真数字电路功耗 Cadence仿真数字电路功耗 数字电路的功耗采用平均电流乘电源电压获得,所以本文的关键是测量平均电流。 仿真前设置好仿真参数后,在仿真的ADE街边选择:outputs➡to be saved➡select on design 选择电源的负端电流(若选择正端,则电流为负): 选择完成后,在ADE界面讲所选节点的plot也勾选上,点击run。仿真完成后自动显示波形。在波形上选中该电流曲线,右击选择:send to➡calculator 注意上图中,商店前的波形不稳定,需要进行截取。在calculator 阅读详情

相关推荐

python音频信号分析

声音以具有诸如频率、带宽、分贝等参数的音频信号的形式表示,典型的音频信号可以表示为幅度和时间的函数

MAY的博客 2785

插入排序的基本思想

插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。 #include using namespace std; int main() {     inti,j,n,temp,a[100];     cout     cin>>n;     cout    

lonely_Quan的专栏 680

从零开始 使用OMNET++结合VEINS,INET和SUMO的联合仿真

搭建仿真的环境,导入VEINS和INET开源库,使用INET库中提供的网络协议和功能模型来模拟通信协议和网络功能,使用SUMO创建道路网络和车辆轨迹,并导出到OMNeT++中 在OMNeT++中使用VEINS通过socket和SUMO连接,借助VEINS实现的TRACI接口来设置车辆相关的行为和场景,最后在OMNET++中结合VEINS,SUMO和INET运行联合仿真实验,并分析车辆在遇到紧急情况下的通信状况和具体行为

mjmmm的博客 1万+

用大白话和面试官扯“八大常用排序算法的基本思想”

目录 一、直接插入排序 二、希尔排序 三、直接选择排序 四、堆排序 五、冒泡排序 六、快速排序 七、归并排序 八、基数排序 Hello,你好呀,我是灰小猿,一个超会写bug的程序猿。 最近在进行学习的时候发现总能用到数据结构中的各种排序算法,有的记忆不到位的还需要重新去了解学习。所以今天就抽空在这里和大家总结一下常见的内部排序算法设计的基本思想,可能比较言简意赅,所以欢迎有其他见解的小伙伴在评论区提出分享。 一、直接插入排序 直接插入排序的基本思想:每步将一个待排序的记录按其排序

累计发表博客60余万字,优快云 博客专家、Java 领域优质创作者、华为云享专家、阿里云专家博主。专注分享 Java 优质文章,毕设实战项目开发,全网粉丝10W+ 6277

时序SDC约束set_data_check及常见应用场景

时序约束SDC之set_data_check命令及常见应用场景解析

weixin_37584728的博客 2288

从赛题到实战:一份面向高职“区块链技术应用”赛项的食品溯源系统全栈部署与运维指南

本文为高职院校学生备战“区块链技术应用”技能大赛提供了一份详实的食品溯源系统全栈部署与运维指南。内容涵盖从理解赛题业务逻辑、绘制技术蓝图,到搭建4节点FISCO BCOS联盟链、部署管理平台与智能合约,再到核心运维技能与前后端联调测试的完整流程,旨在帮助参赛者将赛题转化为可运行的实战项目,全面提升区块链全栈开发与运维能力。

weixin_29172201的博客 686

插入数据进入已排好序的数组

题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。 #include<stdio.h> int main(){ int n; //用到哪个变量定义哪个变量 ...

weixin_30384031的博客 299

SRAM compiler选项中 Soft Error Repair (SER)

引起的瞬时故障,可能会影响 SRAM 中存储的数据。SER 功能通过某种机制检测并修复这些错误,从而提高存储器的可靠性。在 SRAM 编译器中,

hzmscut的博客 1154

插入排序算法的思想

简明概要: 总的来说,就是通过对未排序的数据执行逐个插入到合适的位置从而完成相应的排序工作。 基本思想: 首先对于数组的第一个和第二个数据进行从小到大的排序; 然后将第三个数据与前面排序好的两个数据进行比较,按照从小到大的思想将第三个数据插入到合适的位置; 接着按照第二步,将第四个数据与前三个排好的数据进行比较,并且将其插到合适的位置; 不断重复上述过程,完成所有数据的排序操作。

yuleichun的博客 712

Allegro老鸟的20年效率秘籍:用YepEda Skill脚本实现PCB设计全流程自动化

本文分享了Allegro资深工程师20年效率秘籍,通过YepEda Skill脚本实现PCB设计全流程自动化。从封装建库到规则配置,再到DFM审核,YepEda Skill大幅提升设计效率,每天节省至少4小时重复劳动。文章详细解析了自动化工具链的核心功能,并提供了实战技巧和量化对比数据。

weixin_42546392的博客 239

vue2/3 - H5 移动端网页中调用手机摄像头扫描二维码 / 条形码功能,在h5手机网页里调起相机摄像头进行二维码或条形码扫描效果详细教程(详细示例组件源码,一键复制开箱即用!)

vue扫描二维码条形码,vue网页调用摄像头扫二维码条形码,vue移动端如何实现调用相机扫描二维码,vue移动端扫一扫功能,vue怎么做移动端h5扫一扫功能,vue识别二维码和条形码,vue实现点击按钮调用摄像头扫码,vue调用本地摄像头实现拍照功能,Vue中如何进行二维码生成与扫描,如何实现vue在手机浏览器中调用摄像头实现扫描二维码功能,VUE项目移动端H5调用摄像头扫码,vue项目中实现H5调取摄像头,网页调用摄像头实现二维码扫描功能,vue调用手机摄像头,vue在调用摄像头扫码,vue自定义打开摄像

✅ 精选推荐文章 1万+

【算法】 ——插入排序(直接插入排序,希尔排序)的基本思想和解析

1.插入排序 插入排序的基本思想: 插入排序是一种最简单的的排序思想,它的思想是将一个数据插入到一个有序的数据列表,得到一个新的有序列表。 插入排序类型于将我们完的扑克,将牌一张一张插入到我们的序列中,形成一个有序的序列。 整形数组 9 1 2 5 7 4插入排序的过程。蓝色箭头指向的值为tmp值。紫色箭头是tmp插入的位置。 插入排序 对应的代码: void Insert(int arr[], int n) { for (int i =...

sjp11的博客 2658

OpenCASCADE:写IGES

OpenCASCADE:写IGES程序涵盖的领域流程说明初始化过程设置翻译参数执行 Open CASCADE Technology 形状转换编写 IGES 文件将开放级联技术形状映射到 IGES 实体曲线表面拓扑实体——人脸模式下的平移公差管理在 IGES 文件中设置分辨率代码架构调用图例子 程序 您可以通过以下步骤将 OCCT 形状转换为 IGES 实体: 初始化进程。 设置翻译参数, 执行模型翻译, 写入输出 IGES 文件。 您可以在写入文件之前转换多个形状。每个形状都将是 IGES 模型中的根实体。

希望我的博客,能帮上你解决学习中工作中所遇到的问题 923

C++算法之插入排序

C++算法之插入排序 文章目录C++算法之插入排序一、算法描述二、代码实现三、复杂度分析 一、算法描述 整理插入排序算法描述如下: 枚举序列中第2~n个元素。 当枚举元素i时,前i-1个元素已经有序。将第i个元素插入到前i-1个元素的有序序列中,形成长度为i的有序序列。 枚举过程结束后,整个序列有序。 在上述算法描述中,我们有个关键的步骤——插入操作:将第i个元素插入到前i-1个元素的有序序列中,形成长度为i的有序序列。 怎样实现这个过程呢? 一种实现思路和前面介绍的“火车站插队”过程十分类似。比如

R_mine的博客 5872

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

插入排序算法

  插入排序(Insertion sort)一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动 。   插入排序是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的

大彤小忆的博客 6996

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

插入排序算法的JAVA实现

package Utils.Sort;/***插入排序,要求待排序的数组必须实现Comparable接口*/public class InsertSort implements SortStrategy{       /**       *利用插入排序算法对obj进行排序       */       public void sort(Comparable []obj)       {      

刘锡明的专栏 1万+

排序算法之插入排序

插入排序是一种基于数组插入操作的排序算法。它的思想是:选定数组的某个元素为基准数base,将 base与其左边的元素依次对比大小,并“插入”到正确位置。然而,由于数组在内存中的存储方式是连续的,我们无法直接把base插入到目标位置,而是需要将从目标位置到base之间的所有元素向右移动一位(本质上是一次数组插入操作)。

m0_62919535的博客 1382

【算法】1 由插入排序看如何分析和设计算法

插入排序及其解决思路算法的作用自然不用多说,无论是在校学生,还是已经工作多年,只要想在计算机这条道路走得更远,算法都是必不可少的。就像编程语言中的“Hello World!”程序一般,学习算法一开始学的便是排序算法。排序问题在日常生活中也是很常见的,说得专业点:输入是:n个数的一个序列<a1,a2,...,an−1,an><a_1,a_2,...,a_{n-1},a_n> 输出是:这n个数的一个全

nomasp 1万+

实现折半插入排序算法

/** *    实验题目: *        实现折半插入排序算法 *    实验目的: *        领会折半插入排序的过程和算法设计 *    实验内容: *        设计程序,实现折半插入排序算法。用相关数据进行测试,并 *    输出各趟的排序结果。 */ #include &lt;stdio.h&gt; #define MAX_LEN     (100)         ...

xiezhi123456的博客 4151

【小算法】插入排序

插入排序也是一种非常容易理解的算法,核心思想就是每次将新的元素往原本有序的数组中插入。 算法思路 假设有下面一组数据,需要从小到大升序排列。 插入排序的算法是 1. 进行多轮迭代。 2. 每一次迭代的前提是将当前的数值插入到前面已经排序好的子数组当中。 也许描述有写抽象,但用显示当中玩扑克牌的经验可以很好地类比插入排序。 比如你手里已经有一堆牌。 5、6、J、K 如果你再抓到一张 9,那...

frank 的专栏 2153

Java插入排序算法

package com.tentact.sort; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; public class InsertSort { public static void main(String[] args) { //int[] arr = {101, 34, 119, 1, -1, 89}; // 创建要给80000个的随机的数组 int[] ar

weixin_44256581的博客 233

什么是插入排序算法?

介绍 大家好,我是Sanjula,在这个教程中,我希望告诉你一些关于插入排序算法的知识,包括: 什么是插入排序 为什么插入排序很重要 插入排序的性能 插入排序的原理 Java代码实现 让我们开始吧! 什么是插入排序 它是一种简单的排序算法,只需遍历一次数组即可完成排序。 为什么插入排序很重要 插入排序有几个优势: 算法简单好理解 相...

Python_GCS的博客 759
上一篇: 关于mysql中添加新用户名的方法(权限)
下一篇: 最长公共子序列和的 算法
chwei_cson
博客等级 码龄15年 62粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值