js排序算法

1.冒泡排序

function bubbleSort(arr) {
	var len = arr.length;
	for(var i=0; i<len; i++) {
		for(var j=0; j<len-i; j++) {
			if(arr[j+1]<arr[j]){
				var temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}
	return arr;
}

每次比较把最大的放在最后面,每次少比较一个

2.插入排序

function insertSort(arr) {
	for(let i=1; i<arr.length; i++) {
		cur = arr[i];
		pre = i-1;
		while(pre>=0 && cur<arr[pre]){
			arr[pre+1] = arr[pre];
			pre--;
		}
		arr[pre+1] = cur;
	}
	return arr;
}

从下标1开始,和前面的比,比前面的小就放到前面。

3.希尔排序

function shellSort(arr) {
	var gap = parseInt(arr.length/2);
	while(gap>0){
		for(let i=gap; i<arr.length; i++) {
			cur = arr[i];
			pre = i-gap;
			while(pre>=0 && cur<arr[pre]){
			arr[pre+gap] = arr[pre];
			pre = pre - gap;
		}
		arr[pre+gap] = cur;
		}
	gap = parseInt(gap/2);
	}
	return arr;
}

将待排序的序列分成若干个子序列,将子序列进行插入排序,再对全体进行一次插入排序

4.快速排序

function quickSort(arr) {
	if (arr.length <= 1) { return arr; }
	var index = Math.floor(arr.length/2);
	var target = arr.splice(index, 1)[0];
	var left = [];
	var right =[];
	for (let i=0; i<arr.length; i++) {
		if(arr[i]<=target){
			left.push(arr[i]);
			}else{
			right.push(arr[i]);
			}
		}
	return [...quickSort(left), target ,...quickSort(right)];
	//return quickSort(left).concat([pivot],quickSort(right));
	}

5.选择排序

function selsetSort(arr){
	var index;
	for(let i=0; i<arr.length; i++) {
		index = i;
		for(let j=i+1; j<arr.length;j++) {
			if(arr[index]>arr[j]){ //找每一次遍历比i最小的
				index = j; //保存最小的索引
			}
		}
		if(index!=i){
			let temp = arr[i];
			arr[i] = arr[index];
			arr[index] = temp;
		}
	}
	return arr;
}

每次找到最小值,与第一个元素交换。

6.归并排序

function merge(left, right){
 	var re = [];
 	while(left.length>0&&right.length>0){
 		if(left[0]<right[0]) {
 			re.push(left.shift());
 		}else{
 			re.push(right.shift());
 		}
 	}
 	return re.concat(left).concat(right);
 }

 function mergeSort(arr){
 	if(arr.length==1) return arr;
 	var mid = Math.floor(arr.length/2);
 	var left = arr.slice(0,mid);
 	var right = arr.slice(mid);
 	return merge(mergeSort(left), mergeSort(right));
 }
 var arr = [48,1,5,9,6,3,8,7];
 var a = mergeSort(arr);
 console.log(a);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
超强的Web在线矢量绘图器与监控系统 http://www.visual-graph.com/article/view.asp?id=1 工业图形网站:http://www.visual-graph.com 图形相关下载:http://www.visual-graph.com/down 图形相关技术:http://www.visual-graph.com/article 图形系统截图:http://www.visual-graph.com/gallery OnlineDraw是一个VG专为IE设计的矢量绘图组件。网页中有了VG,用户就可以直接在网页中绘制矢量图形、处理点阵图片,同时也可以做为一个可视化的图片上传客户端工具。OnlineDraw是一个标准的 COM控件产品,它本身只是一个"白板". 超强的Web在线矢量绘图器 OnlineDraw是一个VG专为IE设计的矢量绘图组件。网页中有了VG,用户就可以直接在网页中绘制矢量图形、处理点阵图片,同时也可以做为一个可视化的图片上传客户端工具。OnlineDraw是一个标准的 COM控件产品,它本身只是一个"白板",您可以根据您的具体需求,对他的所有工具条,图库列表,属性列表框等所有界面进行定制,定制的过程就是一个绘图的过程,所有的工具按钮和绘图事件都可以用 HTML 和 &#106avascript 来创建和激发。 简单几条语句即可在网站上实现功能拓展 控件本身是一个平台,全部功能均由VG内部,JS易于配合WB/S系统的图形绘制服务进行少量(二三十行代码)开发就可以出来了。完全的客户端控件,不增加服务器压力,一切功能均在客户端实现,无需服务器进行实时的数据计算,如果需要服务器的交互,VG也提供相应的接口与方法来在客户端与服务器端进行轻量级XML交互数据。 基于Visual Graph的OnlineDraw图形编辑工具经过近多年的深入研究与应用,有预见性地开发了大量具有潜在应用的功能,长期与用户互相合作,大量吸取用户应用经验,多年来的应用研究试验,Visual Graph终于被打造成图形应用领域里面的超级引擎,其中的OnlineDraw图形编辑器在Web上应用非常广泛,服务不断前进,在技术与质量上赢得了众多合作伙伴的心。OnlineDraw图形编辑器主要特点是: 1.包含编辑与运行状态,可以任意操纵与控制图形变化,实现各种仿真与建模。 2.图形和图库是统一的XML格式,便于传输、存储和维护,支持WEB开发。 3.响应众多的图形操作事件,任意给图形添加属性成函数,任意自定义图形。 4.可以建立和分析图形间的任意拓朴连接关系,实现各种逻辑运算与控制。 5.内含面向对象的Visual Graph脚本语言,简洁易用的COM类库接口。 6.每个图形都是对象,拥有众多的属性和函数,可以方便地编辑和操纵。 7.支持报表开发,表格高度智能,可以制作超酷图形界面,轻松换肤。 8.非常容易地开发出任何复杂变化的图形,轻松实现自己的图形库。 9.技术完善:多页面、多图层、表格图形混排、透明度、自由旋转、动画效果、自定义线型、网纹、箭头、自定义任意多个文字标注、自定义图元连接点、自定义光标、图形保护、控制点,支持图形的逻辑分组,允许图元嵌套构建更复杂的图元。 10.混合编程:不仅其他程序可以操控Visual Graph的一切,而且Visual Graph的脚本可以调用其他语言的程序,也可以调用DLL,任意扩充内部函数,扩展功能。脚本语言的编程习惯和一般语言相同,各种属性、函数名称也都相同。 尺寸小、速度快,运行稳定,能适应工业上机器常年工作等环境;能轻松作出工业上的各种动作设备以及常用的曲线图、棒图、尺寸线,实现工业的过程监控;能让软件公司在短时间内开发出高质量的组态监控软件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值