排序算法 —— 插入排序
基本思想
当读入一个元素时,在已经排序好的序列中,搜寻它正确的位置,再放入读入的元素。但不该忽略一个重要的问题:在插入这个元素前,应当先将它后面的所有元素后移一位,以保证插入位置的原元素不被覆盖。
具体步骤
插入排序使用的是增量(incremental)方法;在排好子数组A[1…j-1]后,将A[j]插入,形成排好序的子数组A[1…j];
步骤:
⒈从有序数列和无序数列{a2,a3,…,an}开始进行排序;
⒉处理第i个元素时(i=2,3,…,n),数列{a1,a2,…,ai-1}是已有序的,而数列{ai,ai+1,…,an}是无序的。用ai与ai-1,a i-2,…,a1进行比较,找出合适的位置将ai插入;
⒊重复第二步,共进行n-i次插入处理,数列全部有序。
实现方法
程序代码
#include <iostream>
using namespace std;
int main ()
{int n,temp,array[1000];cin>>n;array[0]=n;for(int i=1;i<=n;i++){cin>>array[i];for(int j=1;j<=i;j++){if(array[i]<array[j]){temp=array[i];array[i]=array[j];array[j]=temp;}}}for(int i=1;i<=n;i++){cout<<array[i]<<' ';}return 0;
}
算法分析
实际复杂度
算法稳定性
排序算法 —— 插入排序相关推荐
- 算法学习--排序算法--插入排序
算法学习--排序算法--插入排序 插入排序算法 代码实现 插入排序算法 插入排序(Insertion sort)是一种简单直观且稳定的排序算法.如果有一个已经有序的数据序列,要求在这个已经排好的数据序 ...
- Java排序算法——插入排序(Insertion Sort)
之前总结了交换排序的冒泡排序与选择排序的简单选择排序,这次我们来看看插入排序的简单插入排序~ 往期传送门: 冒泡排序: Java排序算法--冒泡排序(Bubble Sort)https://blog. ...
- 【Java】基础排序算法-插入排序
基础排序算法-------插入排序 实现过程: 插入排序的过程就像整理桥牌的过程:每次将待排元素中的第一个元素插入到有序区间的合适位置,为了给当前待排元素腾出位置,需要将有序区间内所有大于待排元素的其 ...
- python排序算法——插入排序
python排序算法--插入排序 文章目录 python排序算法--插入排序 一.前言 二.描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序算法是指 ...
- 排序算法---插入排序(java版)
直接插入排序 原理 直接插入排序(Insertion Sort)的原理是:将数组中的数据分为两个区间,已排序区间和未排序区间.初始已排序区间只有一个元素,就是数组的第一个元素.插入算法的核心思想是取未 ...
- c语言插入排序算法伪代码,排序算法——插入排序(C语言实现)
原理 默认数组的第一个数据是有个有序数组,由于只有一个数据,肯定是有序队列.从乱序数组的第二个位置开始,与之前的有序数组中的数据依次作比较,找到合适的位置将该数据插入有序数组,直到将最后一个数据插入有 ...
- 排序算法——插入排序
插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕. 插入排序方法分直接插入排序和折半插入排序两种,这里只介绍直接插入排序,折半插入排序留到"查找 ...
- js插值法的使用_js 实现排序算法 -- 插入排序(Insertion Sort)
原文: 插入排序 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法描述 ...
- 排序算法-插入排序的时间复杂度分析
插入排序的原理是,将数组分为已排序区间和未排序区间两部分,从未排序区间中依次取元素跟已排序区间的元素一一对比,找到适合插入的位置. 拿数组[4,5,6,1,3,2]来举例,如图所示是排序的图解过程.这 ...
- 排序算法 | 插入排序算法原理及实现和优化
插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据. 直接插入排序是插入排序算法中的一种,采用的方法是: ...
最新文章
- 为什么2G/3G和AI擦不出火花?他们用这篇论文告诉你答案
- Scalaz(23)- 泛函数据结构: Zipper-游标定位
- 移动端事件 、zepto移动端事件
- 3 Curator框架实现分布式锁
- Linux基本命令-1
- Android之去掉RecycleView和NestedScrollView边缘效果
- 软件工程-c语言--基于at89c51单片机c语言编写的计算器,基于AT89C1单片机C语言编写的计算器.doc...
- Kafka是如何处理Netflix每天2万亿条消息的?
- Web前端——HTML
- android apk 防止反编译技术加壳技术(转)
- python中reversed函数,Python3
- 面试官:这货一听就是一个水货...
- Python和Matlab小波分析
- pgAdmin III简介
- Ubuntu18.04 上 ESP8285 的 esp-at release_v2.2.0.0 编译环境搭建
- 如何重新编辑排版错乱的PDF文件
- python 随机森林分类 代码
- matlab写子函数,matlab主函数子函数怎么写
- 北斗导航 | EagleEye2000:国产激光雷达走进测绘世界
- 使用EChat通过php读取后台数据将其转换为饼状图
热门文章
- canvas学习之API整理笔记(一)
- php四种基础排序算法的运行时间比较
- UINavgationController中覆写preferredStatusBarStyle方法不执行的问题
- ecshop 快速添加会员
- 2015 11月30日 一周工作计划与执行
- [转载] 新兵训练营系列课程——海量数据存储基础
- RPM安装包-Spec文件參数具体解释与演示样例分析
- eclipse +python 修改 各种颜色 +字体
- ise的时钟ip核_ISE的IP核clocking wizard使用和例化
- Java黑皮书课后题第7章:*7.21(整数求和)编写程序,从命令行输入不定数目的整数,然后显示它们的和