【排序算法】——插入排序
来源:互联网 发布:fm球员在线数据库 编辑:程序博客网 时间:2024/06/05 11:42
第一部分 理论知识
·分类
分为直接插入排序,二分插入排序(这般插入排序),链表插入排序,希尔排序(缩小增量排序)。属于稳定排序。所有的记录插入完为止,得到一个新的有序序列。
·内部排序和外部排序
根据排序过程中涉及的存储器不同,可以讲排序方法分为两大类:一类是内部排序,指的是待排序的几率存放在计算机随机存储器中进行的排序过程;另一类的外部排序,指的是排序中要对外存储器进行访问的排序过程。
内部排序是排序的基础,在内部排序中,根据排序过程中所依据的原则可以将它们分为5类:插入排序、交换排序、选择排序、归并排序和基数排序;根据排序过程的时间复杂度来分,可以分为三类:简单排序、先进排序、基数排序。
评价排序算法优劣的标准主要是两条:一是算法的运算量,这主要是通过记录的比较次数和移动次数来反应;另一个是执行算法所需要的附加存储单元的的多少。
·直接插入排序的算法思路
(1) 设置监视哨r[0],将待插入纪录的值赋值给r[0];
(2) 设置开始查找的位置j;
(3) 在数组中进行搜索,搜索中将第j个纪录后移,直至r[0].key≥r[j].key为止;
(4) 将r[0]插入r[j+1]的位置上。
(2) 设置开始查找的位置j;
(3) 在数组中进行搜索,搜索中将第j个纪录后移,直至r[0].key≥r[j].key为止;
(4) 将r[0]插入r[j+1]的位置上。
· 排列过程
假如有一串数字 8 9 4 6 7 3 2 1 10 5 十个数字进行直接插入法排序
直接插入排序就是将无序区的数据,在和有序区比较之后放在其合适的位置。插入算法更像是一个正的直角三角形,是一个用有序区组成的直角三角形。
· 代码实现(c#)
class 冒泡排序 { //定义一个数组 static List<int> list = new List<int>() {8,9,4 ,6, 7,3,2,1,10,5 }; static void Main(string[] args) { //调用排序方法 Bubble(); PrintList(); } //冒泡排序 static void Bubble() { //定义临时变量 int temp = 0; for (int i = list.Count; i > 0; i--) { for (int j = 0; j < i-1; j++) { //相邻的两个数进行比较,把较大的数放到后面 if (list[j] >list[j+1]) { //交换数据 temp = list[j]; list[j] = list[j+1]; list[j+1] = temp; } } } } private static void PrintList() { foreach (var item in list) { Console.WriteLine(string.Format("{0}", item)); } Console.WriteLine(); Console.ReadLine(); } }
·总结
老师讲了那么多的算法,都没有认真的去实现一遍挺愧疚。别忘了出来混,迟早要还的。看现在到了还账的时间了吧。当初没有好好学的,软考是都要考滴。要想比别人优秀,就要比别人多付出。啊哈,算法!终于遇见你~
0 0
- 排序—插入排序算法
- 排序算法—插入排序
- 数据结构&算法实践—【排序|插入排序】插入排序
- 排序算法—插入排序之直接插入排序
- 排序算法1—插入排序、选择排序、冒泡排序
- 排序算法——插入排序(直接插入排序、折半插入排序、希尔排序)
- 排序算法——插入排序
- 排序算法——二分插入排序
- 排序算法之一——插入排序
- 排序算法——插入排序
- 排序算法——插入排序
- 排序算法总结——插入排序
- 经典算法排序——插入排序
- 算法之排序——插入排序
- 排序算法——插入排序
- 排序算法3——插入排序
- 排序算法——插入排序
- 排序算法——插入排序
- GridLayout学习使用
- js对Date类和String的扩展
- 一文读懂机器学习,大数据/自然语言处理/算法全有了……
- 六,UITabBarController
- UE4 的 C++ 开发体验
- 【排序算法】——插入排序
- 前端面试笔试题
- 2016/09/22 22:05
- 第四周【项目四-猴子选大王】
- Andorid Studio使用技巧
- TextView的属性详解
- Microsoft Security Essentials 和 Windows Defender 离线升级包下载地址
- POJ 1734 最小环的路径
- Python 函数相关