当前位置: 首页 > news >正文

排序与算法:插入排序

执行效果
插入排序的执行效果是这样的:

呃……看不懂吗?没关系,接着往下看介绍 

算法介绍
插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用原地排序(即只需用到 O(1) 的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
如果对插入排序的效率不是很满意,还可以看下它的改进版:希尔排序

算法档案
时间复杂度:O(n2)
最优时间复杂度:O(n)
平均时间复杂度:O(n2)
空间复杂度:总共 O(n),需要辅助空间 O(1)
稳定性:稳定

算法步骤
从第一个元素开始,该元素可以认为已经被排序

  • 取出下一个元素,在已经排序的元素序列中从后向前扫描
  • 如果该元素(已排序)大于新元素,将该元素移到下一位置
  • 重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置
  • 将新元素插入到该位置后
  • 重复步骤 2~5,直到所有元素排序完毕

算法实现

#include <stdio.h>

void insertion_sort(int array[], int length);

void insertion_sort(int array[], int length)

{

        int i, j, temp;

        for (i = 1; i < length; i++)
        {
                temp = array[zxsq-anti-bbcode-i];
                j = i - 1;

                for ( ; j >= 0 && array[zxsq-anti-bbcode-j] > temp; j--)
                {
                        array[j+1] = array[zxsq-anti-bbcode-j];
                }
                array[j+1] = temp;
        }
}


int main(void)
{
        int array[] = {73, 108, 111, 118, 101, 70, 105, 115, 104, 67, 46, 99, 111, 109};
        int i, length;

        length = sizeof(array) / sizeof(array[zxsq-anti-bbcode-0]);
        insertion_sort(array, length);
        printf("排序后的结果是:");

        for (i = 0; i < length; i++)
        {
                printf("%d ", array[zxsq-anti-bbcode-i]);
        }

        putchar('\n');

        return 0;
}

程序实现如下:

相关文章:

  • mapbox基础,使用geojson加载line线图层,实现纯色填充、图片填充、虚线和渐变效果
  • 【Qt】Q_OBJECT无法用在模版类中的原因和解决方法
  • GPT-2 大模型
  • 本地部署DeepSeek
  • 提升接口性能之缓存
  • 分治-归并排序
  • 反射和特性
  • Annie导航2.0 新增加5个模版 开源免授权
  • 当机器人遇见艺术:春晚机器人舞蹈,一场科技与艺术的完美邂逅
  • Redis实现登录优化
  • 阿里云前端自动化部署流程指南
  • LayUi点击查看图片组件layer.photos()用法(图片放大预览后滚动鼠标缩放、底部显示自定义标题)
  • 观察者模式
  • uniapp中@input输入事件在修改值只有第一次有效的问题解决
  • RocketMQ面试题:原理部分
  • 组学数据分析实操系列 |(四) 富集气泡图的绘制
  • 书籍翻页动画
  • 系统学习算法:专题十一 floodfill算法
  • 51c自动驾驶~合集51
  • ubuntu22.04离线安装K8S
  • 党建评:对违规宴饮等问题要坚决露头就打
  • 沧州低空经济起飞:飞行汽车开启千亿赛道,通用机场布局文旅体验
  • 美国务院批准向土耳其出售导弹及相关部件,价值3.04亿美元
  • 河南省委常委会会议:坚持以案为鉴,深刻汲取教训
  • 四部门:强化汛期农业防灾减灾,奋力夺取粮食和农业丰收
  • “救护车”半路加价?陕西卫健委已介入,记者调查:黑救护车挤占市场