首页 > 其他分享 >插入排序

插入排序

时间:2023-11-05 23:45:20浏览次数:35  
标签:int 插入排序 元素 插入 key 序列 排序

目录

目录

算法

将待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列
从头到尾依次扫描未排序序列,将扫描到的每个未排序元素插入有序序列的适当位置。

就像给一副扑克牌排序,取第一张作为排序的开始,从剩下的牌中取第二张,并把它以恰当的位置插入已经排过序的牌(这时的已排序的牌只有第一张)中,以此类推,把剩下未排序的牌插入以排过序的牌中

代码

int a[100] = { 29,10,14,37,14 };
    int n = 5;
    int i, j, key;
    for (i = 1; i < n; i++) //第一个待排序元素
    {
        key = a[i];//待插入元素
        j = i - 1;
        while ((j >= 0) && (a[j] > key)) //遍历已排序序列,直到待插入元素找到应有位置
        {
            a[j + 1] = a[j];//若待插入元素小于此元素,就将此元素后移一位
            j--;
        }
        a[j + 1] = key;//待插入元素找到应有位置,插入。
    }

流程图

将第一个元素标记为已排序

1.对于每一个未排序的元素 X,“提取” 元素 X

将x与前面已排序过的元素比较

x<a[0],则a[0]后移一位

此时已排序序列遍历完成,x插入a[0]。

2.再“提取” 未排序元素 X

将x与前面已排序过的元素a[1]比较

x<a[1],则a[1]后移一位

再与a[0]比较,a[0]<x,a[0]不动

x插入a[1]

3.以此类推


标签:int,插入排序,元素,插入,key,序列,排序
From: https://www.cnblogs.com/wa2211lq/p/17811585.html

相关文章

  • 运用递归学习新知识——插入排序
    还是老样子,先讲一下插入排序的一个概念,比如校合唱团要按身高排队,从左到右由矮到高,小糖同学左边的同学已经按照身高站好了,右边还很乱,于是团长小蓝姐姐想了一个办法,她叫小糖同学往左看,小糖同学左边第一位叫男低1号,左边第二位叫男低2号,右边第一位叫男高1号,右边第二位叫男高2号,以此类......
  • 希尔排序:优化插入排序的精妙算法
    排序算法在计算机科学中扮演着重要的角色,其中希尔排序(ShellSort)是一种经典的排序算法。本文将带您深入了解希尔排序,包括其工作原理、性能分析以及如何使用Java进行实现。什么是希尔排序?希尔排序,又称“缩小增量排序”,是插入排序的一种改进版本。它的核心思想是通过逐步缩小增量值......
  • 插入排序
    原数组为915623 1voidprint(vector<int>&a,intn,inti){2cout<<"step"<<i<<":";3for(intj=0;j<n;j++){4cout<<a[j]<<"";5}6......
  • 【基础算法】排序算法 —— 插入排序
    一、算法原理插入排序将数组分为已排序区间和未排序区间,初始已排序区间只有数组第1个元素,未排序区间从下标1开始到数组末尾。每次取未排序区间的第1个元素,将它插入已排序区间的合适位置,并保证已排序区间一直有序。重复这个过程,直到未排序区间为空,算法结束。给有序数组(已排序区......
  • 插入排序:简单而有效的排序方法
    在计算机科学中,排序算法是一个重要且常见的主题,它们用于对数据进行有序排列。插入排序(InsertionSort)是其中一个简单但有效的排序算法。本文将详细解释插入排序的原理和步骤,并提供Java语言的实现示例。插入排序的原理及性能分析插入排序的核心思想是逐个将未排序的元素插入到已排序......
  • 插入排序
    classSolution:definsertion_sort(lst):foriinrange(1,len(lst)):forjinrange(i,0,-1):iflst[j]<lst[j-1]:lst[j],lst[j-1]=lst[j-1],lst[j]else:......
  • 链表插入排序
    创建节点类publicclassNode{intn;Nodenext;}第1次推导publicclasstest{publicstaticvoidmain(String[]args){//新建节点Nodenode1=newNode();node1.n=2;Nodenode2=newNode();node......
  • 数组插入排序
    第1次推导publicclasstest{publicstaticvoidmain(String[]args){int[]ints={2,5,3,1,8,9};inttmp;//存储临时变量intj;//开始比较第几位的数//第1次//2,5,3,1,8,9j=1;//比较索引1的数......
  • 【从0学习Solidity】 10. 控制流,用solidity实现插入排序
    【从0学习Solidity】10.控制流,用solidity实现插入排序博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发,期待与您一起在移动开发的世界中,不断进步和......
  • [CSP-J 2021] 插入排序
    题目描述插入排序是一种非常常见且简单的排序算法。小Z是一名大一的新生,今天H老师刚刚在上课的时候讲了插入排序算法。假设比较两个元素的时间为\(\mathcalO(1)\),则插入排序可以以\(\mathcalO(n^2)\)的时间复杂度完成长度为\(n\)的数组的排序。不妨假设这\(n\)个数......