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

排序概念以及插入排序

一、排序基本概念

1.就地排序:使用恒定的额外空间来产生输出

就地排序只是在原数组空间进行排序处理,也就是输入的数组和得到的数组是同一个

2.内部排序和外部排序:待排序数据可以一次性载入到内存中为内部排序,反之数据量过大就是外部排序

本科阶段几乎都是内部排序

3.稳定排序:排序前后序列中键值相等的元素在相对位置不发生变化的就是稳定排序

4.哪些排序是稳定和不稳定:

a.冒泡排序(Bubble sort),插入排序(Insrtion sort),归并排序(Merge sort)和计数排序(Counting sort)等本身就具有稳定排序的特质

b.快速排序、堆排序等是不稳定排序

c.虽然很多算法本身具有稳定或不稳定排序性质但是任何排序只要稍作修改就可以修改稳定性,例如在冒泡排序中判断交换顺序的依据是if(a>b)只要变成if(a>=b)就可以破坏稳定性

二、插入排序

特点:

1,经过几次排序后,前几个元素就已经有序了,后序元素是否有序无关

2,怕新元素是前面已经有序元素的最小值

3.如果待排序的元素,已经有序,只有极个别的元素是无序,插入速度较快

4.如果元素是链式存储,非常时候插入排序

三、代码实现

1.头文件中的接口

//
// Created by 27893 on 2025/8/9.
//#ifndef INSERTSORT_H
#define INSERTSORT_H
typedef struct {int key;void*data;
}Element;typedef struct {Element*data;int len;
}SortTable;void insertSort(SortTable*table);
#endif //INSERTSORT_H

2.算法的实现

//
// Created by 27893 on 2025/8/9.
//#include "InsertSort.h"void insertSort(SortTable *table) {//从第二个开始插入for (int i=1;i<table->len;i++) {if (table->data[i].key<table->data[i-1].key) {//用j来辅助查找元素的真正待插入位置int temp=table->data[i].key;int j=i-1;//只要待插入元素比j指向位置还小就往前while (j!=-1&&temp<table->data[j].key) {table->data[j+1].key=table->data[j].key;j--;}//否则结束插入到j的后一个位置table->data[j+1].key=temp;}}
}

http://www.xdnf.cn/news/17506.html

相关文章:

  • C++-红黑树
  • 嵌入式 Linux Mender OTA 实战全指南
  • 上海AI Lab、浙大EagleLab等提出RRVF:利用「验证非对称性」,只输入图片学习视觉推理
  • 【LLM】Openai之gpt-oss模型和GPT5模型
  • NestJS Config 入门教程
  • 自动生成视频的AI大模型高效创作指南
  • Java Stream API 实战:提升集合处理的效率与可读性!
  • 微雪电子发布工业级ESP32-S3-POE工控板:8路隔离IO,双核240MHz赋能AIoT,一根网线解决供电与通信,工业物联网迎来高性价比控制新选择
  • 关键点检测(10)——yolov8-pose 复现coco-pose
  • 【QT】QMainWindow:打造专业级桌面应用的基石
  • Python基础教程(七)匹配模式:隐藏在结构之美中的编程革命
  • 实用Shell高级视频课程
  • 【CVPR2025】计算机视觉|PX:让模型训练“事半功倍”!
  • Uipath Studio中邮件自动化
  • 微信小程序中实现表单自动填充功能的方法
  • ABP VNext + Apache Kafka Exactly-Once 语义:金融级消息一致性实战
  • 在Docker中下载RabbitMQ(详细讲解参数)
  • 需求管理流程规范
  • Java-file类
  • Mybatis学习之自定义映射resultMap(七)
  • STM32CubeMX(十三)FatFs文件系统(SPI驱动W25Qxx)
  • BGP 笔记
  • 配送算法10 Batching and Matching for Food Delivery in Dynamic Road Networks
  • .NET程序跨平台ARM电脑上发布的程序格式是,so还是DLL?
  • stm32项目(24)——基于STM32的汽车CAN通信系统
  • 费米问题:估算北京有多少量特斯拉汽车?
  • 等保测评-RabbitMQ中间件
  • 【线性代数】目录
  • day 16 stm32 IIC
  • STM32——时钟系统