C++排序之直接插入排序法
直接插入排序算法是将一个记录插入到已排序好的有序表中,从而得到一个新的,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。
要点:设立哨兵,作为临时存储和判断数组边界之用。
如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的。
算法实现代码如下:
#include <iostream>using namespace std;void print(int a[], int n ){ cout<<n <<":"; for(int j= 0; j<n; j++){ cout<<a[j] <<" "; } cout<<endl;
} void InsertSort(int a[], int n)
{ for(int i= 1; i<n; i++){ if(a[i] < a[i-1]){ //若第i个元素大于i-1元素,直接插入。小于的话,移动有序表后插入 int j= i-1; int x = a[i]; //复制为哨兵,即存储待排序元素 a[i] = a[i-1]; //先后移一个元素 while(x < a[j]){ //查找在有序表的插入位置 a[j+1] = a[j]; j--; //元素后移 //printf("j=%d",j);if (j<=0){break;}} a[j+1] = x; //插入到正确位置 } print(a,n); //打印每趟排序的结果 }
} int main(){ int a[9] = {3,1,5,7,2,4,9,6,6}; InsertSort(a,9); print(a,9); return 0;
}
计算结果如下:
9:1 3 5 7 2 4 9 6 6
9:1 3 5 7 2 4 9 6 6
9:1 3 5 7 2 4 9 6 6
9:1 2 3 5 7 4 9 6 6
9:1 2 3 4 5 7 9 6 6
9:1 2 3 4 5 7 9 6 6
9:1 2 3 4 5 6 7 9 6
9:1 2 3 4 5 6 6 7 9
9:1 2 3 4 5 6 6 7 9
C++排序之直接插入排序法相关推荐
- 排序算法(一)--插入排序法折半插入排序法
约定: 假设数据中有n个数据元素(关键字).排列算法中,将序列中各关键字值依次存放于类型为keytype的数组元素K[1], K[2], K[3], -, K[n]中. 排序结果按照数据元素(关键字) ...
- 排序算法之插入排序法
无论是C语言相关书籍还是算法等等,很多种书籍上都有介绍排序算法,而排序算法重要的在于它的思想,这也是一个程序的灵魂,相信大家也早都知道.在此,我简单介绍一下插入排序法的基本思想,以供一些初学者及掌握不 ...
- Java插空排序,Java直接插入排序法详解
前面给大家介绍过了冒泡排序法.选择排序法等等,下面就来给大家讲一下java直接插入排序法,一起通过文章来进行了解吧. 来看一下基本思想: 将n个有序数存放在数组a中,要插入的数为x,首先确定x插在数组 ...
- python中怎么比较两个列表的大小_python中对列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法...
前言 排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列.本文主要讲述python中经常用的三种排序算法,选择排序法 ...
- java插入法排序_java算法之插入排序法
思想:插入排序法的思想就是从数组的第二个元素开始,将数组中的每一个元素按照规则插入到已排好序的数组中以达到排序的目的.一般情况下将数组的第一个元素作为启始元素,从第二个元素开始依次插入.由于要插入到的 ...
- 简单排序(插入排序法)
蒜头君给了一个长度为 N(不大于 500)的正整数序列(正整数的值不超过 N),请将其中的所有奇数取出,并按升序输出. 输入格式 共 2 行: 第 1行为 N: 第 2 行为 N 个正整数,其间用空格 ...
- C语言编程>第二十三周 ③ 下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序;然后把第三字符插入
例题:下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序.插入法的基本算法是:先对字符串中的头两个元素进行排序:然后把第三字符插入到前两个字符中,插入后前三个字 ...
- 排序算法之简单插入排序法
对于初学者来说,排序算法是C语言学习的一个重点和难点,我就来分享一下我的学习心得吧! 排序算法有3类:1.交换类排序法.包括冒泡排序和快速排序 2.插入类排序法.包括简单插入排序和希尔排序 3.选择类 ...
- python中对列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法
前言 排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列.本文主要讲述python中经常用的三种排序算法,选择排序法 ...
最新文章
- IaaS、PaaS 和 SaaS:云服务模型概述
- 爬虫学习笔记(十五)——加密解密
- Linux系统颜色默认表示的文件类型
- Redis的搭建和Redis的集群搭建
- 5款强大的JVM 性能调优监控工具 !
- 8086汇编常用指令(待解释)
- linux 扩充db2表空间,如何扩充db2的表空间、加容器等表空间维护操作
- 使用ASP.NET Core 3.x 构建 RESTful API - 4.3 HTTP 方法的安全性和幂等性
- 怎样从red hat linux图形登录改成从文本登录
- IDEA查看Java类的UML关系图
- 0514JS练习:函数
- 我接触到的几款SQLite管理工具
- HTML静态网页作业——仿天猫购物商城(7页) 网页设计作业,网页制作作业, 学生网页作业, 网页作业成品, 网页作业模板
- 【程序员如何买基金 九】基金定投的优势
- hackerrank初级篇之staircase
- vue入门笔记(三)
- Spark SQL增量查询Hudi表
- 公众号改名了,聊聊我的思考
- c语言编程代码五星红旗,飘动的五星红旗
- html的浮动字幕怎么改大小,请问怎么调整字幕字体的大小和特效??