一道JS算法面试题——冒泡、选择排序


Posted in Javascript onApril 21, 2021

基础排序

今天学习了数据结构,遇到了一个关于算法的面试题,然后从中想到了冒泡排序和选择排序对一个数组从小到大的排序的方法,今天分享给大家,顺便记录下我的学习经历吧。

冒泡排序

要求:对数组[6,3,8,2,9,1]进行从小到大的排序
想法:相邻的两个位置进行对比,如果大的那个换到右边,小的那个换到左边。上代码!

var arr = [6,3,8,2,9,1];
var len = arr.length;
for(var i=0;i<arr.length;i++){
	//len-1-i的意思是数组最后那个的长度
	for(var j=0;j<len-1-i;j++){
		if(arr[j]>arr[j+1]){
			var temp = arr[j];//因为arr[j]会被赋值,所有要先保存一下
			arr[j] = arr[j+1];
			arr[j+1] = temp;
		}
	}
}

选择排序

要求:对数组[49,27,65,97,76,12,38]进行从小到大的排序
想法:创建一个指针先指向第一位置,然后另一个指针扫后面所有的,找到最小的,跟第一个指针互换位置

var arr = [49,27,65,97,76,12,38];
var len = arr.length;
var pont = null;//设定一个指针
for(var i=0;i<arr.length;i++){
	pont = i;//指针先指向第一个位置
	for(var j=i+1;j<arr.length;j++){
		if(arr[point] > arr[j]){
			pont = j;
		}
	}
	var temp = arr[i];
	arr[i] = arr[point];
	arr[point] = temp;
}

面试题

要求:把数组[{‘brand’:‘可乐’,‘price’:3,‘year’:2021},{‘brand’:‘薯片’,‘price’:7,‘year’:2020},{‘brand’:‘朗姆酒’,‘price’:200,‘year’:1999},{‘brand’:‘薯条’,‘price’:7,‘year’:2021},{‘brand’:‘营养快线’,‘price’:5,‘year’:2021}] 安装价格从小到大排序,如果价格一样,价格按从大到小排序。
想法:用刚才的选择排序来实现

var arr = [{'brand':'可乐','price':3,'year':2021},{'brand':'薯片','price':7,'year':2020},{'brand':'朗姆酒','price':200,'year':1999},{'brand':‘薯条’,'price':7,'year':2021},{'brand':‘营养快线’,'price':5,'year':2021}];
var len = arr.length;
var point = null;
for(var i=0; i<arr.length;i++){
	point = i;
	for(var j=i+1;j<arr.lenth;j++){
		if(arr[pont]['price'] > arr[j]['price']){
			point = j;
		}else if(arr[point]['price'] > arr[j]['price'] && arr[point]['year'] < arr[j]['year']){
			point = j;
		}
	}
	var temp = arr[i];
	arr[i] = arr[point];
	arr[point] = temp;
}

这样就实现了,题目要求的排序了。如果有喜欢前端的伙伴,可以关注我一下,我会每周不定期,分享前端的小知识点,一起学习进步。

Javascript 相关文章推荐
利用js获取服务器时间的两个简单方法
Jan 08 Javascript
jquery实现table鼠标经过变色代码
Sep 25 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
Oct 16 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
Aug 05 Javascript
JavaScript实现的MD5算法完整实例
Feb 02 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
Aug 02 Javascript
AngularJs Modules详解及示例代码
Sep 01 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
Mar 04 Javascript
Node.js使用Express创建Web项目详细教程
Mar 31 Javascript
在Js页面通过POST传递参数跳转到新页面详解
Aug 25 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
Oct 16 Javascript
JavaScript 中的无穷数(Infinity)详解
Feb 13 Javascript
吃通javascript正则表达式
Apr 21 #Javascript
Ajax是什么?Ajax高级用法之Axios技术
在HTML5 localStorage中存储对象的示例代码
Apr 21 #Javascript
canvas多重阴影发光效果实现
JavaScript+HTML实现学生信息管理系统
浅谈vue2的$refs在vue3组合式API中的替代方法
JS实现简单控制视频播放倍速的实例代码
You might like
PHP利用COM对象访问SQLServer、Access
2006/10/09 PHP
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
删除javascript所创建子节点的方法
2015/05/21 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
2016/04/17 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
Javascript使用function创建类的两种方法(推荐)
2016/11/19 Javascript
vue-router实现webApp切换页面动画效果代码
2017/05/25 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
浅谈vue首屏加载优化
2018/06/28 Javascript
jQuery实现导航样式布局操作示例【可自定义样式布局】
2018/07/24 jQuery
Node.js 获取微信JS-SDK CONFIG的方法示例
2019/05/21 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
[01:00:59]VP VS VG Supermajor小组赛胜者组第二轮 BO3第二场 6.2
2018/06/03 DOTA
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
python中函数默认值使用注意点详解
2016/06/01 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
python回调函数中使用多线程的方法
2017/12/25 Python
python实现桌面壁纸切换功能
2019/01/21 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
将python文件打包exe独立运行程序方法详解
2020/02/12 Python
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
实习自我鉴定
2013/12/15 职场文书
父亲的菜园教学反思
2014/02/13 职场文书
2016十一国庆节感言
2015/12/09 职场文书
Go timer如何调度
2021/06/09 Golang
浅析MongoDB之安全认证
2021/06/26 MongoDB
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技