当前位置: 首页 > 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;
}

程序实现如下:

http://www.lryc.cn/news/540951.html

相关文章:

  • HashMap 详解
  • DAY07 Collection、Iterator、泛型、数据结构
  • 计算机网络之物理层——基于《计算机网络》谢希仁第八版
  • 简讯:Rust 2024 edition and v1.85.0 已发布
  • DeepSeek写俄罗斯方块手机小游戏
  • uniapp中引入Vant Weapp的保姆级教学(包含错误处理)
  • 【Python爬虫(20)】解锁Python爬虫数据存储秘籍:文件存储全攻略
  • 关于Unity的一些基础知识点汇总
  • SpringCould+vue3项目的后台用户管理的CURD【Taurus教育平台】
  • 功能说明并准备静态结构
  • solidity之Foundry安装配置(一)
  • 请解释 Vue 中的生命周期钩子,不同阶段触发的钩子函数及其用途是什么?
  • C#上位机--选择语句(switch)
  • Hadoop初体验
  • 在vue2中操作数组,如何保证其视图的响应式
  • CentOS的ssh复制文件
  • Spring Cloud — Hystrix 服务隔离、请求缓存及合并
  • Vmware虚拟机Ubantu安装Docker、k8s、kuboard
  • PHP建立MySQL持久化连接(长连接)及mysql与mysqli扩展的区别
  • python爬虫系列课程2:如何下载Xpath Helper
  • 【Python项目】基于Python的Web漏洞挖掘系统
  • 多环境日志管理:使用Logback与Logstash集成实现高效日志处理
  • idea连接gitee(使用idea远程兼容gitee)
  • STM32 看门狗
  • 飞书API
  • 深入解析 Hydra 库:灵活强大的 Python 配置管理框架
  • 【开源免费】基于Vue和SpringBoot的失物招领平台(附论文)
  • 科普:你的笔记本电脑中有三个IP:127.0.0.1、无线网 IP 和局域网 IP;两个域名:localhost和host.docker.internal
  • 测试WSS服务器
  • unity学习49:寻路网格链接 offMeshLinks, 以及传送门效果