一道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 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
Apr 10 Javascript
JQuery EasyUI 对话框的使用方法
Oct 24 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
Nov 25 Javascript
js中substring和substr的定义和用法
May 05 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
May 18 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
Dec 26 Javascript
JavaScript表单验证完美代码
Mar 02 Javascript
jQuery完成表单验证的实例代码(纯代码)
Sep 30 jQuery
JS实现点击复选框变更DIV显示状态的示例代码
Dec 18 Javascript
浅析JS中回调函数及用法
Jul 25 Javascript
详解微信小程序之scroll-view的flex布局问题
Jan 16 Javascript
Vue商品控件与购物车联动效果的实例代码
Jul 21 Javascript
吃通javascript正则表达式
Apr 21 #Javascript
Ajax是什么?Ajax高级用法之Axios技术
在HTML5 localStorage中存储对象的示例代码
Apr 21 #Javascript
canvas多重阴影发光效果实现
JavaScript+HTML实现学生信息管理系统
浅谈vue2的$refs在vue3组合式API中的替代方法
JS实现简单控制视频播放倍速的实例代码
You might like
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
浅析PHP开发规范
2018/02/05 PHP
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
Bootstrap每天必学之面板
2015/11/30 Javascript
基于Javascript实现弹出页面效果
2016/01/01 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
2018/11/30 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
layui 中select下拉change事件失效的解决方法
2019/09/20 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
Python深入学习之内存管理
2014/08/31 Python
python实现telnet客户端的方法
2015/04/15 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
Python入门Anaconda和Pycharm的安装和配置详解
2019/07/16 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
在Python中使用MongoEngine操作数据库教程实例
2019/12/03 Python
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
幼儿教师思想汇报
2014/01/10 职场文书
如何写一封打动人心的求职信
2014/02/17 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书
2015年办公室人员工作总结
2015/05/15 职场文书
创业计划书之校园超市
2019/09/12 职场文书
使用numpy实现矩阵的翻转(flip)与旋转
2021/06/03 Python
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers