一道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 相关文章推荐
mouse_on_title.js
Aug 25 Javascript
使用jquery写个更改表格行顺序的小功能
Apr 29 Javascript
javascript搜索框效果实现方法
May 14 Javascript
Jquery zTree 树控件异步加载操作
Feb 25 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
Jan 12 Javascript
js实现放大镜特效
May 18 Javascript
微信小程序 sha1 实现密码加密实例详解
Jul 06 Javascript
基于vue.js实现的分页
Mar 13 Javascript
js图片查看器插件用法示例
Jun 22 Javascript
JS实现json数组排序操作实例分析
Oct 28 Javascript
微信小程序如何实现radio单选框单击打勾和取消
Jan 21 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
Aug 20 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执行定时任务的实现思路
2015/12/21 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
Yii2表单事件之Ajax提交实现方法
2017/05/04 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
2019/04/12 PHP
关于laravel后台模板laravel-admin select框的使用详解
2019/10/03 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
动态加载iframe
2006/06/16 Javascript
jquery ready函数源代码研究
2009/12/06 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
javascript新闻跑马灯实例代码
2020/07/29 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
JavaScript中使用Async实现异步控制
2017/08/15 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
vue实现购物车加减
2020/05/30 Javascript
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
使用Eclipse如何开发python脚本
2018/04/11 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
Python3+Selenium+Chrome实现自动填写WPS表单
2020/02/12 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
2018/01/10 HTML / CSS
荷兰最大的儿童服装店:The Kids Republic
2019/04/13 全球购物
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
Linux开机引导的步骤是什么
2015/10/19 面试题
办公室主任主任岗位责任制
2014/02/11 职场文书
教师通用专业自荐书范文
2014/02/11 职场文书
优秀员工推荐信
2014/05/10 职场文书
学生个人评语大全
2015/01/04 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
2016年第29个世界无烟日宣传活动总结
2016/04/06 职场文书
JavaScript的function函数详细介绍
2021/11/20 Javascript