插入排序讲解

插入排序(Insertion-Sort)一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动,从而实行排序的目的。

插入排序图示:

 来看看插入排序的模板题:

因为前面讲过插入排序的思想,所以具体的看代码:

void insertion_sort(int a[],int n){for(int i = 2; i <= n; i++){int j = i-1;//不能用i,因为后面要j--的int key = a[i];//定义key等于当前要比的数while(j >= 1 && a[j] > key){a[j+1] = a[j];j--;}//然后循环,j >= 1是保证不越界,a[j] > key是当a[j]大于key的时候才循环,如果a[j]小于key了,就把key插在这里了a[j+1] = key;//插入key}
}

CODE:

#include <bits/stdc++.h>
using namespace std;
int a[1001];
void insertion_sort(int a[], int n){for(int i = 2; i <= n; i++){int key = a[i];int j = i-1;while(j >= 1 && a[j] > key){a[j+1] = a[j];j--;}a[j+1] = key;}
}
int main(){int n;cin >> n;for(int i = 1; i <= n; i++) cin >> a[i];insertion_sort(a,n);for(int i = 1; i <= n; i++) cout << a[i]<<" ";return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/55598.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JDWP远程命令执行

活包含着更广阔的意义&#xff0c;而不在于我们实际得到了什么&#xff1b;关键是我们的心灵是否充实。对于生活理想&#xff0c;应该象宗教徒对待宗教一样充满虔诚与热情&#xff01; 漏洞证明 telnet x.x.x.x一般回返回如图的信息&#xff0c;但是经过测试不返回的也是可以…

数据分析 VS 数据可视化:决战时刻

数据分析和数据可视化是数据科学领域中两个重要的组成部分&#xff0c;很多人不明白两者之间的关系&#xff0c;会误认为是一个东西&#xff0c;其实不然。本文就带大家简单了解一下它们的区别与联系吧&#xff01; 数据分析是指通过收集、处理和解释数据来获取有关特定问题或…

Excel下拉框样式

1.打开要修改的Excel&#xff0c;选中要修改样式的单元格 2.在上边导航栏中选择 Data&#xff0c;找到 Data Validation&#xff0c;点击下面的 Data Validation… 3.在设置中找到 Allow 项&#xff0c;选择 List。Source中填写可供选择的值&#xff0c;以逗号&#xff08;…

全志F1C200S嵌入式驱动开发(从DDR中截取内存)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 linux内核起来的时候,不一定所有的内存都是分配给linux使用的。有的时候,我们是希望能够截留一部分内存的。为什么保留这部分内存呢?这里面可以有很多的用途。比如说,第一,如果…

CI/CD—Docker初入门学习

1 docker 了解 1 Docker 简介 Docker 是基于 Go 语言的开源应用容器虚拟化技术。Docker的主要目标是build、ship and run any app&#xff0c;anywhere&#xff0c;即通过对应用组件的封装、分发、部署、运行等生命周期的管理&#xff0c;达到应用组件级别的一次封装、到处运…

unraid docker桥接模式打不开页面,主机模式正常

unraid 80x86版filebrowser&#xff0c;一次掉电后&#xff0c;重启出现权限问题&#xff0c;而且filebrowser的核显驱动不支持amd的VA-API 因为用不上核显驱动&#xff0c;解压缩功能也用不上&#xff0c;官方版本的filebrowser还小巧一些&#xff0c;18m左右 安装的时候总是…

LeetCode 热题 100 JavaScript --226. 翻转二叉树

给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 3&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[] 提示&#xff1a; 树中节点数目范围在 [0, 100] 内 -100 < Node.val < 100 var invertTree function(root…

Element-ui中分页器的使用

<template>中写&#xff1a; js中写&#xff1a;

基于Vgg16和Vgg19深度学习网络的步态识别系统matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022A 3.部分核心程序 ................................................................ % 设置训练选项options …

On Evaluation of Embodied Navigation Agents 论文阅读

论文信息 题目&#xff1a;On Evaluation of Embodied Navigation Agents 作者&#xff1a;Peter Anderson&#xff0c;Angel Chang 来源&#xff1a;arXiv 时间&#xff1a;2018 Abstract 过去两年&#xff0c;导航方面的创造性工作激增。这种创造性的输出产生了大量有时不…

阿里云快速部署开发环境 (Apache + Mysql8.0)

本文章的内容截取于云服务器管理控制台提供的安装步骤&#xff0c;再整合前人思路而成&#xff0c;文章末端会提供原文连接 ApacheMysql 8.0部署MySQL数据库&#xff08;Linux&#xff09;步骤一&#xff1a;安装MySQL步骤二&#xff1a;配置MySQL步骤三&#xff1a;远程访问My…

Linux性能学习(4.4):网络_TCP三次握手内核参数优化

文章目录 1 三次握手2 参数优化2.1 tcp_syn_retries--->SYN重传次数2.2 tcp_synack_retries--->ACK重传次数2.3 tcp_retries2--->发送数据失败重传次数2.4 TCP keepalive--->保活机制2.5 tcp_max_syn_backlog/somaxconn--->半/全连接队列长度2.6 tcp_syncookies…