蓝桥杯 插入排序

插入排序的思想

插入排序是一种简单直观的排序算法,其基本思想是将待排序的元素逐个插入到已排序序列

的合适位置中,使得已排序序列逐渐扩大,从而逐步构建有序序列,最终得到完全有序的序

列。

它类似于我们打扑克牌时的排序方式,将一张张牌插入到已经有序的手牌中。

时间复杂度为O(n^2)。

插入排序的实现

cpp 复制代码
//i表示当前要确定的位置
for(int i=2;i<=n;i++){
	
	//此时[1,i-1]已经为有序的数组
	int val=a[i],j;
	
	//将val和a[j-1]比较
	//如果val<a[j-1]就将a[j-1]往后移动一格
	//给val留出位置
	for(j=i;j>1&&val<a[j-1];j--){
		a[j]=a[j-1];
	} 
	//当循环跳出时,j==1或val>a[j] ,且此时a[j]已经往后移动
	//此时的j为val腾出的位置
	a[j]=val; 
} 

例题讲解

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+9;
int a[N];
int main(){
	int n;cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=2;i<=n;i++){
	int val=a[i],j;
	for(j=i;j>1&&val<a[j-1];j--){
		a[j]=a[j-1];
	} 
	a[j]=val; 
} 
	for(int i=1;i<=n;i++) cout<<a[i]<<" \n"[i==n];
	return 0; 
}
相关推荐
深盾科技22 分钟前
C/C++逆向分析实战:变量的奥秘与安全防护
c语言·c++·安全
海洲探索-Hydrovo2 小时前
TTP Aether X 天通透传模块丨国产自主可控大数据双向通讯定位模组
网络·人工智能·科技·算法·信息与通信
ajassi20003 小时前
开源 C++ QT QML 开发(二十)多媒体--摄像头拍照
c++·qt·开源
_OP_CHEN3 小时前
C++基础:(十二)list类的基础使用
开发语言·数据结构·c++·stl·list类·list核心接口·list底层原理
2401_841495645 小时前
【计算机视觉】基于复杂环境下的车牌识别
人工智能·python·算法·计算机视觉·去噪·车牌识别·字符识别
Jonkin-Ma5 小时前
每日算法(1)之单链表
算法
奔跑吧邓邓子6 小时前
【C语言实战(8)】C语言循环结构(do-while):解锁编程新境界
c语言·实战·do-while
晚风残6 小时前
【C++ Primer】第六章:函数
开发语言·c++·算法·c++ primer
小莞尔6 小时前
【51单片机】【protues仿真】基于51单片机温度测量系统
c语言·单片机·嵌入式硬件·物联网·51单片机
杨云强6 小时前
离散积分,相同表达式数组和公式
算法