算法分析-插入排序INSERT_SORT与选择排序SELECT_SORT【线性方法】
1 var A = [5, 2, 4, 6, 1, 3]; 2 console.log("排序前-:") 3 A.forEach(function (element, index, arr) { 4 console.log(index, "-----------", element); 5 }); 6 7 function insertion_sort(A) { 8 var len = A.length; 9 for (var i = 1; i < len; i++) { 10 let key = A[i]; 11 let j = i - 1; 12 while (j >= 0 && A[j] > key) { 13 A[j + 1] = A[j]; 14 j--; 15 } 16 A[j + 1] = key; 17 } 18 } 19 20 insertion_sort(A); 21 console.log("排序后-"); 22 A.forEach(function (element, index, arr) { 23 console.log(index, "-----------", element); 24 });
上面的代码是算法导论里给的伪代码例子,是一种升序的写法,那降序的怎么写呢:
1 function insertion_sort(A) { 2 var len = A.length; 3 for (var i = 1; i < len; i++) { 4 let key = A[i]; 5 let j = i - 1; 6 while (j >= 0 && A[j] < key) { 7 A[j + 1] = A[j]; 8 j--; 9 } 10 11 A[j + 1] = key; 12 } 13 }
在给一个选择排序的算法(升序):
1 function SelectSort(A) { 2 var len = A.length; 3 for (var i = 0; i < len; i++) { 4 var min = A[i]; 5 var index = i; 6 var temp = A[i]; 7 for (var j = i + 1; j < len; j++) { 8 if (A[j] < min) { 9 min = A[j]; 10 index = j; 11 } 12 } 13 A[i] = min; 14 A[index] = temp; 15 16 } 17 18 }
线性排序的方法里还有个冒泡,就是两两互换,也是线性的。下一篇讲解分治。
转载于:https://www.cnblogs.com/huenchao/p/5899633.html
算法分析-插入排序INSERT_SORT与选择排序SELECT_SORT【线性方法】相关推荐
- 对以下6种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序。
题目要求: (1)对以下6种常用的内部排序算法进行比较:起泡排序.直接插入排序.简单选择排序.快速排序.希尔排序.堆排序. (2)待排序表的表长不小于100:其中的数据要用伪随机数产生程序产生:至少要 ...
- 排序算法分析:冒泡排序、选择排序、插入排序、希尔排序、快速排序
文章目录 一.冒泡排序 二.选择排序 三.插入排序 四.希尔排序 五.快速排序 一.冒泡排序 冒泡排序(Bubble Sort),它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大 ...
- 选择排序(Select_Sort)
基本思想 每一趟从待排序的数据元素中选出最小(最大)的元素,顺序放在待排序的数列最前,直到全部待排序的数据元素全部排完. 特点 数据结构:数组 稳定性:不稳定 过程 初始关键字:『 8,5,2,6,9 ...
- Java【快速排序、插入排序、简单选择排序...】【八大排序-综合实验】
目 录 1.快速排序 1.1.概念+举例 1.2.完整代码 2.插入排序 2.1.概念+举例 2.2.完整代码 3.简单选择排序 3.1.概念+举例 3.2.完整代码 4.3种排序-综合代码 4. ...
- c语言简单选择对字符串数组排序,简单了解C语言中直接插入排序与直接选择排序实现...
直接插入排序基本思路: 1. 从a[0]开始,也就是从1个元素开始是有序的,a[1]~a[n-1]是无序的. 2. 从a[1]开始并入前面有序的数组,直到n-1. #include #define N ...
- 十大经典排序算法(图解与代码)——冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序(Python and Java)
排序 重新排列表中的元素,使表中的元素按照关键字递增或者递减 内部排序: 指在排序期间,元素全部存放在内存中的排序 外部排序: 指在排序期间元素无法全部同时存放在内存中,必须在排序的过程中根据要求不断 ...
- 请插入多卷集的最后一张磁盘_聊一聊插入排序和选择排序
简介 插入排序和比较排序是排序算法中比较基础和简单的两种,其时间复杂度均为 ,在分析算法时间复杂度时,我们往往会只会分析比较开销,但是交换开销也确实存在.这里我将综合比较开销和交换开销,来分析一下插入 ...
- 排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序...
先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...
- java 快速排序算法简单_排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序......
先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...
最新文章
- 滑动返回类库SwipeBackLayout的使用问题,解决返回黑屏,和看到桌面
- python基础知识面试题-基础篇--【python】面试题汇总
- Mistakes(Updating)
- 异常:This application has no explicit mapping for /error.以及spring.mvc.view.prefix配置解决
- 做python自动化得时候怎么添加断言_在编写Web自动化测试用例的时候,如何写断言使新手不解,严格意义上来讲,没有断言的自动化脚本不能叫测试用例。就像功能测试一样,当测试人员做了一些操作...
- python是谁维护的_Python 库从开发到维护
- VC编程实现IE风格的界面
- 实现瀑布流的核心代码
- 通过udp及vlc传递视频流
- Java 之常用API(一)
- 热烈欢迎 东北鸿顺山特产品有限公司网站正式上线
- android 手机工具箱,Android超级工具箱,你的手机可能缺一个!
- 最新添加了一键加入服务器的功能,功能介绍 - 晴天漫画系统 晴天漫画程序 基于标签的一套自动采集更新漫画系统...
- Astah绘制UML图形
- SpringBoot自定义banner,如何定制炫酷的banner提升项目B格?
- ubuntu 下语系编码转换
- 跟奥巴马一起编程(15)
- 普元EOS7.5,finishworkitem结束工作项报java.lang.NumberFormatException异常
- php获取网址根目录,php获取当前目录_php获得网站根目录的几个方法
- WIN7使用过360系统急救箱后出现的任务计划程序文件夹删除的办法
热门文章
- 华为机试题2[编程题] 汽水瓶
- Spring的声明式事务
- 几个常见的 Socket 连接错误及原因
- 【Java】函数使用
- (转)javascrit中的uriencode
- linux ubuntu内核安装位置,在Ubuntu中安装或升级内核 linux kernel
- android遥控器用什么测试,Android编程调用红外线遥控功能示例
- ansible获取服务器信息,ansible监控服务器资源使用
- 可以作为html5页面开发工具的有,HTML5开发工具有哪些
- oracle_exporter安装配置,node_exporter安装和配置