一道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代码
Mar 06 Javascript
javascript一点特殊用法
May 28 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
Aug 09 Javascript
JS取文本框中最小值的简单实例
Nov 29 Javascript
利用javascript打开模态对话框(示例代码)
Jan 11 Javascript
js实现用户注册协议倒计时的方法
Jan 21 Javascript
es6学习笔记之Async函数基本教程
May 11 Javascript
浅谈angular2 组件的生命周期钩子
Aug 12 Javascript
vue2.0 资源文件assets和static的区别详解
Apr 08 Javascript
vue3.0 搭建项目总结(详细步骤)
May 20 Javascript
使用webpack搭建pixi.js开发环境
Feb 12 Javascript
vue项目中使用bpmn-自定义platter的示例代码
May 11 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之apc
2013/05/15 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
phpQuery占用内存过多的处理方法
2013/11/13 PHP
基于thinkPHP实现的微信自定义分享功能示例
2016/09/23 PHP
PHP实现基于3DES算法加密解密字符串示例
2018/08/24 PHP
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
jQuery 跨域访问问题解决方法
2009/12/02 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
jQuery的基本概念与高级编程
2015/05/14 Javascript
jsTree使用记录实例
2016/12/01 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
Vue实现移动端页面切换效果【推荐】
2018/11/13 Javascript
玩转Koa之核心原理分析
2018/12/29 Javascript
微信小程序身份证验证方法实现详解
2019/06/28 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
python连接mysql调用存储过程示例
2014/03/05 Python
Python动态加载模块的3种方法
2014/11/22 Python
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
python 实现上传图片并预览的3种方法(推荐)
2017/07/14 Python
用python处理图片实现图像中的像素访问
2018/05/04 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
Django正则URL匹配实现流程解析
2020/11/13 Python
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
幼儿园教研活动总结
2014/04/30 职场文书
无私奉献演讲稿
2014/09/04 职场文书
2014年高一班主任工作总结
2014/12/05 职场文书
《云雀的心愿》教学反思
2016/02/23 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python