一道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 面向对象编程基础:继承
Aug 21 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
Feb 23 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
Sep 16 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
Mar 29 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
Aug 18 Javascript
将两个div左右并列显示并实现点击标题切换内容
Oct 22 Javascript
Avalonjs 实现简单购物车功能(实例代码)
Feb 07 Javascript
Angular1.x自定义指令实例详解
Mar 01 Javascript
JS中的数组转变成JSON格式字符串的方法
May 09 Javascript
JavaScript中附件预览功能实现详解(推荐)
Aug 15 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
Aug 13 Javascript
详解TS数字分隔符和更严格的类属性检查
May 06 Javascript
吃通javascript正则表达式
Apr 21 #Javascript
Ajax是什么?Ajax高级用法之Axios技术
在HTML5 localStorage中存储对象的示例代码
Apr 21 #Javascript
canvas多重阴影发光效果实现
JavaScript+HTML实现学生信息管理系统
浅谈vue2的$refs在vue3组合式API中的替代方法
JS实现简单控制视频播放倍速的实例代码
You might like
Server.HTMLEncode让代码在页面里显示为源代码
2013/12/08 PHP
PHP的pcntl多进程用法实例
2015/03/19 PHP
php+js实现百度地图多点标注的方法
2016/11/30 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
一些不错的js函数ajax
2008/08/20 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
2012/03/01 Javascript
js写一个弹出层并锁屏效果实现代码
2012/12/07 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
js对象基础实例分析
2015/01/13 Javascript
详解angularJS自定义指令间的相互交互
2017/07/05 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
在Django的视图(View)外使用Session的方法
2015/07/23 Python
Python max内置函数详细介绍
2016/11/17 Python
Python正则表达式分组概念与用法详解
2017/06/24 Python
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
pandas带有重复索引操作方法
2018/06/08 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
CSS3——齿轮转动关键代码
2013/05/02 HTML / CSS
文言文形式的学生求职信
2013/12/03 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
销售口号大全
2014/06/11 职场文书
实习介绍信模板
2015/01/30 职场文书
MySQL复制问题的三个参数分析
2021/04/07 MySQL
vue项目支付功能代码详解
2022/02/18 Vue.js
springboot读取nacos配置文件
2022/05/20 Java/Android