一道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 相关文章推荐
如何在Web页面上直接打开、编辑、创建Office文档
Mar 12 Javascript
extjs之去除s.gif的影响
Dec 25 Javascript
javascript 系统文件夹文件操作及参数介绍
Jan 08 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
Sep 04 Javascript
JavaScript中的console.group()函数详细介绍
Dec 29 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
Aug 21 Javascript
JavaScript事件代理和委托详解
Apr 08 Javascript
利用Vue.js指令实现全选功能
Sep 08 Javascript
vue使用stompjs实现mqtt消息推送通知
Jun 22 Javascript
微信小程序授权登录及解密unionId出错的方法
Sep 26 Javascript
vue 获取url参数、get参数返回数组的操作
Nov 12 Javascript
vue在图片上传的时候压缩图片
Nov 18 Vue.js
吃通javascript正则表达式
Apr 21 #Javascript
Ajax是什么?Ajax高级用法之Axios技术
在HTML5 localStorage中存储对象的示例代码
Apr 21 #Javascript
canvas多重阴影发光效果实现
JavaScript+HTML实现学生信息管理系统
浅谈vue2的$refs在vue3组合式API中的替代方法
JS实现简单控制视频播放倍速的实例代码
You might like
解析PHP将对象转换成数组的方法(兼容多维数组类型)
2013/06/21 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
ThinkPHP惯例配置文件详解
2014/07/14 PHP
再推荐十款免费的php开发工具
2015/11/09 PHP
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
js读取配置文件自写
2014/02/11 Javascript
javascript生成随机数方法汇总
2015/11/12 Javascript
Jquery遍历select option和添加移除option的实现方法
2016/08/26 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
在element-ui的select下拉框加上滚动加载
2019/04/18 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
[40:13]Ti4 冒泡赛第二天 iG vs NEWBEE 2
2014/07/15 DOTA
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
利用Python绘制MySQL数据图实现数据可视化
2015/03/30 Python
python操作 hbase 数据的方法
2016/12/18 Python
利用python程序生成word和PDF文档的方法
2017/02/14 Python
Python内置函数delattr的具体用法
2017/11/23 Python
python更改已存在excel文件的方法
2018/05/03 Python
python try except 捕获所有异常的实例
2018/10/18 Python
python实现简易数码时钟
2021/02/19 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
python urllib和urllib3知识点总结
2021/02/08 Python
HTML5中5个简单实用的API
2014/04/28 HTML / CSS
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
竞选劳动委员演讲稿
2014/04/28 职场文书
信息员培训方案
2014/06/12 职场文书
小学家长意见怎么写
2015/06/03 职场文书
创业计划书之餐饮
2019/09/02 职场文书
手残删除python之后的补救方法
2021/06/26 Python