算法分析-插入排序INSERT_SORT与选择排序SELECT_SORT【线性方法】
var A = [5, 2, 4, 6, 1, 3];
console.log("排序前-:")
A.forEach(function (element, index, arr) {
console.log(index, "-----------", element);
}); function insertion_sort(A) {
var len = A.length;
for (var i = 1; i < len; i++) {
let key = A[i];
let j = i - 1;
while (j >= 0 && A[j] > key) {
A[j + 1] = A[j];
j--;
}
A[j + 1] = key;
}
} insertion_sort(A);
console.log("排序后-");
A.forEach(function (element, index, arr) {
console.log(index, "-----------", element);
});
上面的代码是算法导论里给的伪代码例子,是一种升序的写法,那降序的怎么写呢:
 function insertion_sort(A) {
     var len = A.length;
     for (var i = 1; i < len; i++) {
         let key = A[i];
         let j = i - 1;
         while (j >= 0 && A[j] < key) {
             A[j + 1] = A[j];
             j--;
         }
         A[j + 1] = key;
     }
 }
在给一个选择排序的算法(升序):
 function SelectSort(A) {
     var len = A.length;
     for (var i = 0; i < len; i++) {
         var min = A[i];
         var index = i;
         var temp = A[i];
         for (var j = i + 1; j < len; j++) {
             if (A[j] < min) {
                 min = A[j];
                 index = j;
             }
         }
         A[i] = min;
         A[index] = temp;
     }
 }
线性排序的方法里还有个冒泡,就是两两互换,也是线性的。下一篇讲解分治。
算法分析-插入排序INSERT_SORT与选择排序SELECT_SORT【线性方法】的更多相关文章
- C# 冒泡排序法、插入排序法、选择排序法
		冒泡排序法 是数组等线性排列的数字从大到小或从小到大排序. 以从小到大排序为例. 数据 11, 35, 39, 30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, ... 
- C#之快速排序      C#之插入排序      C#之选择排序    C#之冒泡排序
		C#之快速排序 算法描述 1.假定数组首位元素为“枢轴”,设定数列首位(begin)与末位(end)索引: 2.由末位索引对应元素与“枢轴”进行比较,如果末位索引对应元素大于“枢轴”元素,对末位索 ... 
- [Java]数组排序-选择排序 冒泡排序 插入排序
		1 选择排序 原理:a 将数组中的每个元素,与第一个元素比较 如果这个元素小于第一个元素, 就将这个 两个元素交换. b 每轮使用a的规则, 可以选择出 ... 
- 跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort)
		跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort) 选择排序(selection sort) 算法原理:有一筐苹果,先挑出最大的一个放在最后,然后 ... 
- c语言选择排序
		简单选择排序是经常用到的一种排序算法. 原理: 1.简单选择排序一句话概括:每次选择无序数列中最小的将其放在有序数列的最后. 2.在简单选择排序中,我们用初始化的数字int a[6]={2,5,6,3 ... 
- 我在北京找工作(二):java实现算法<1> 冒泡排序+直接选择排序
		工作.工作.找工作.经过1个多星期的思想斗争还是决定了找JAVA方面的工作,因为好像能比PHP的工资高点.呵呵 :-) (其实我这是笑脸,什么QQ输入法,模拟表情都没有,忒不人性化了.) 言归正传, ... 
- Java数据结构和算法总结-冒泡排序、选择排序、插入排序算法分析
		前言:排序在算法中的地位自然不必多说,在许多工作中都用到了排序,就像学生成绩统计名次.商城商品销量排名.新闻的搜索热度排名等等.也正因为排序的应用范围如此之广,引起了许多人深入研究它的兴趣,直至今天, ... 
- Java排序算法分析与实现:快排、冒泡排序、选择排序、插入排序、归并排序(二)
		一.概述: 上篇博客介绍了常见简单算法:冒泡排序.选择排序和插入排序.本文介绍高级排序算法:快速排序和归并排序.在开始介绍算法之前,首先介绍高级算法所需要的基础知识:划分.递归,并顺带介绍二分查找算法 ... 
- 算法分析中最常用的几种排序算法(插入排序、希尔排序、冒泡排序、选择排序、快速排序,归并排序)C 语言版
		每次开始动手写算法,都是先把插入排序,冒泡排序写一遍,十次有九次是重复的,所以这次下定决心,将所有常规的排序算法写了一遍,以便日后熟悉. 以下代码总用一个main函数和一个自定义的CommonFunc ... 
随机推荐
- tuple只有一个元素的时候,必须要加逗号
			In [1]: a = (1) In [2]: a Out[2]: 1 In [3]: a = (1,) In [4]: a Out[4]: (1,) 这是因为括号()既可以表示tuple,又可以表示 ... 
- 【3】python核心编程 第六章-序列:字符串、列表和元组
			1.序列类型操作符 序列操作符 作用 seq[ind] 获得下标为ind 的元素 seq[ind1:ind2] 获得下标从ind1 到ind2 间的元素集合 seq * expr 序列重复expr 次 ... 
- python保留指定文件、删除目录其他文件的功能(2)
			在(1)中脚本实现了保留指定文件的功能,但不能删除空目录,在此补上删除空目录的方法 def DeleteEmptyDir(path): for i in range(1,100): for paren ... 
- 做一个正气的杭电人--hdu2500
			做一个正气的杭电人 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ... 
- Ubuntu中找到并杀死僵尸进程
			Ubuntu中产生zombie进程让人很懊恼啊.Windows中在任务管理器里直接找到无响应的进程并结束他就行了,但是ubuntu中需要用命令去解决. System information as of ... 
- scheme一页纸教程
			这是一个大学教授写的,非常好,原文:http://classes.soe.ucsc.edu/cmps112/Spring03/languages/scheme/SchemeTutorialA.html ... 
- InternetExplorer 表单及用户名密码提交
			陆ftp或者其他类似需要输入密码的站点,可以在url中直接输入用户名密码,格式为: ftp://username:password@url 另外一种情况是,如果是表单提交的也可以通过url填写,如: ... 
- 浅谈ThreadPool 线程池
			本文来自:http://www.cnblogs.com/xugang/archive/2010/04/20/1716042.html 相关概念: 线程池可以看做容纳线程的容器: 一个应用程序最多只能有 ... 
- 被Oracle全局暂时表坑了
			今天凌晨4点多钟,在客户现场的负责人打电话给我,说非常奇怪,下载功能时快时慢.此下载功能非常复杂,之前一直是我优化,在半梦半醒中打开电脑,通过远程看着现场同事在PL/SQL developer中操作. ... 
- photoswipe
			allowUserZoom: 允许用户双击放大/移动方式查看图片. 默认值 = trueautoStartSlideshow: 当PhotoSwipe激活后,自动播放幻灯片. 默认值 = falsea ... 
