算法学习-1
来源:互联网 发布:文档加密软件下载 编辑:程序博客网 时间:2024/05/22 01:50
插入排序是学习算法时最先学到的一个算法,很简单,也许看一遍就会理解,从而觉得自己掌握这个基本的算法。但是很多人可能会像我一样,过了一段时间,提笔来写一下插入排序的伪代码,就很难写出书本上如此优雅的伪代码。
INSERTION_SORT(A): For j=2 to A.length key=A[j] //insert A[j] to A[1,..,j-1] i = j-1 while i > 0 and A[i] > key A[i+1] = A[i] i = i -1 A[i+1] = key
所以懂跟掌握真是两回事,要能随时随手写出这几行代码,首先要掌握设计这段代码的思想,其次要有清晰的逻辑,我相信伪代码写得漂亮的人,一定是编程高手。
插入排序的核心思想是代码中注释,把A[j]插入到已排序的A[1,..,j-1]中后,并保证插入后的A[1,..,j]仍然是排好序的,把这个过程从2循环到n,显然当j为2时A[1,..,j-1]等于A[1]满足已排好序这个性质,所以当j迭代为n时,将A[n]插入到A[1,..,n-1]后A[1,..,n]就排好序了。书面上把A[1,..,j-1]的这些特性形式地叫循环不变式。
用循环不变式逻辑很清晰的表明了算法的正确性
最后是如何简洁的把一个值如何正确的插入到已排序的数组中:
在将A[j]插入到A[1,..,j-1]中时,用一个循环变量i从j-1往前循环查找比A[j]大的值都往后移一位,当遇到比key小的时候终止,并把key插入到循环变量后面的位置(i+1)上。
0 0
- 算法学习--算法概述1
- 算法学习1-冒泡算法
- 算法学习笔记(1)
- 算法导论学习1
- 算法学习1
- 算法学习1
- Hash算法学习(1)
- 算法学习-1
- 学习排序算法1
- 算法学习(1)
- 算法学习-1
- 算法分析学习1
- 机器学习算法1
- 算法笔记学习1
- 算法学习1-递归
- FYN 算法学习1~
- 算法导论学习1
- 机器学习算法-K近邻算法(1)
- 突破github的100M单个大文件上传限制
- 双缓冲队列
- cmd+WPS批量重命名文件
- Java NIO 系列教程
- <android-apt学习笔记>
- 算法学习-1
- 记些日常吧
- UVa-1585-Score
- FIDO安全协议
- Git实践教程(一)简介
- PL/SQL Developer连接本地Oracle 11g 64位数据库
- Redis学习系列---数据类型
- pylucene分别安装在linux和windows(官方无Windows版的pylucene,要自编译)
- c——复合类型——函数