一道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 验证浏览器是否支持javascript的方法小结
May 17 Javascript
Javascript获取当前时间函数和时间操作小结
Oct 01 Javascript
如何编写高质量JS代码
Dec 28 Javascript
jQuery插件datalist实现很好看的input下拉列表
Jul 14 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
Sep 02 Javascript
js实现可输入可选择的select下拉框
Dec 21 Javascript
纯JS实现简单的日历
Jun 26 Javascript
AngularJS实时获取并显示密码的方法
Feb 06 Javascript
浅谈Node 调试工具入门教程
Mar 20 Javascript
Layui数据表格之单元格编辑方式
Oct 26 Javascript
js get和post请求实现代码解析
Feb 06 Javascript
js实现无缝轮播图插件封装
Jul 31 Javascript
吃通javascript正则表达式
Apr 21 #Javascript
Ajax是什么?Ajax高级用法之Axios技术
在HTML5 localStorage中存储对象的示例代码
Apr 21 #Javascript
canvas多重阴影发光效果实现
JavaScript+HTML实现学生信息管理系统
浅谈vue2的$refs在vue3组合式API中的替代方法
JS实现简单控制视频播放倍速的实例代码
You might like
桌面中心(三)修改数据库
2006/10/09 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
PHP的全局错误处理详解
2016/04/25 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
详解Javascript动态操作CSS
2014/12/08 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
Vue异步组件使用详解
2017/04/08 Javascript
原生js简单实现放大镜特效
2017/05/16 Javascript
Node.js连接mongodb实例代码
2017/06/06 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
举例区分Python中的浅复制与深复制
2015/07/02 Python
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
意大利香水和化妆品购物网站:Parfimo.it
2019/10/06 全球购物
城管大队整治方案
2014/05/06 职场文书
文明和谐家庭事迹材料
2014/05/18 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
会计求职自荐信
2015/03/26 职场文书
2015年工会工作总结
2015/03/30 职场文书
施工员岗位职责范本
2015/04/11 职场文书
《富饶的西沙群岛》教学反思
2016/02/16 职场文书
2019年中,最受大众欢迎的6本新书
2019/08/07 职场文书
关于办理居住证的介绍信模板
2019/11/27 职场文书
python必学知识之文件操作(建议收藏)
2021/05/30 Python
Pandas-DataFrame知识点汇总
2022/03/16 Python
python解析照片拍摄时间进行图片整理
2022/07/23 Python