一道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 相关文章推荐
JavaScript 入门基础知识 想学习js的朋友可以参考下
Dec 26 Javascript
Extjs中ComboBox加载并赋初值的实现方法
Mar 22 Javascript
node.js中使用node-schedule实现定时任务实例
Jun 03 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
Mar 01 Javascript
JavaScript 经典实例日常收集整理(常用经典)
Mar 30 Javascript
js仿微博动态栏功能
Feb 22 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
Mar 10 Javascript
jquery编写日期选择器
Mar 16 Javascript
JS实现图片点击后出现模态框效果
May 03 Javascript
跨域请求两种方法 jsonp和cors的实现
Nov 11 Javascript
解决layui数据表格Date日期格式的回显Object的问题
Sep 19 Javascript
微信小程序实现菜单左右联动
May 19 Javascript
吃通javascript正则表达式
Apr 21 #Javascript
Ajax是什么?Ajax高级用法之Axios技术
在HTML5 localStorage中存储对象的示例代码
Apr 21 #Javascript
canvas多重阴影发光效果实现
JavaScript+HTML实现学生信息管理系统
浅谈vue2的$refs在vue3组合式API中的替代方法
JS实现简单控制视频播放倍速的实例代码
You might like
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
javascript数组的使用
2013/03/28 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
2016/05/11 Javascript
json传值以及ajax接收详解
2016/05/24 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
Javascript创建类和对象详解
2017/05/31 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
vue设置一开始进入的页面教程
2019/10/28 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
vue自定义标签和单页面多路由的实现代码
2020/05/03 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python自动扫雷实现方法
2015/07/25 Python
回调函数的意义以及python实现实例
2017/06/20 Python
python 实现一个贴吧图片爬虫的示例
2017/10/12 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
django使用graphql的实例
2020/09/02 Python
Python和Bash结合在一起的方法
2020/11/13 Python
python中count函数知识点浅析
2020/12/17 Python
运动会入场词60字
2014/02/15 职场文书
打架检讨书2000字
2014/02/22 职场文书
餐饮总经理岗位职责
2014/03/07 职场文书
公司副总经理任命书
2014/06/05 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
2014社区健康教育工作总结
2014/12/16 职场文书
初中毕业生自我评价
2015/03/02 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
2015年团队工作总结范文
2015/05/04 职场文书