一道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 相关文章推荐
Jquery 组合form元素为json格式,asp.net反序列化
Jul 09 Javascript
js数字转换为float,取N位小数
Feb 08 Javascript
快速入门Vue
Dec 19 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
Jul 04 Javascript
利用Ionic2 + angular4实现一个地区选择组件
Jul 27 Javascript
vue iview实现动态路由和权限验证功能
Apr 17 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
May 21 Javascript
JS html事件冒泡和事件捕获操作示例
May 01 Javascript
jquery.pager.js实现分页效果
Jul 29 jQuery
JsonProperty 的使用方法详解
Oct 11 Javascript
Vue实现剪切板图片压缩功能
Feb 04 Javascript
vue实现井字棋游戏
Sep 29 Javascript
吃通javascript正则表达式
Apr 21 #Javascript
Ajax是什么?Ajax高级用法之Axios技术
在HTML5 localStorage中存储对象的示例代码
Apr 21 #Javascript
canvas多重阴影发光效果实现
JavaScript+HTML实现学生信息管理系统
浅谈vue2的$refs在vue3组合式API中的替代方法
JS实现简单控制视频播放倍速的实例代码
You might like
无限级别菜单的实现
2006/10/09 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
2010/04/12 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
PHP生成随机密码类分享
2014/06/25 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
2014/02/11 Javascript
多个$(document).ready()的执行顺序实例分析
2014/07/26 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
纯javascript响应式树形菜单效果
2015/11/10 Javascript
Javascript复制实例详解
2016/01/28 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
Angular.JS学习之依赖注入$injector详析
2016/10/20 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
js实现简单的倒计时
2021/01/28 Javascript
Python学习笔记之os模块使用总结
2014/11/03 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
Python 查看文件的编码格式方法
2017/12/21 Python
zookeeper python接口实例详解
2018/01/18 Python
解决pycharm安装后代码区不能编辑的问题
2018/10/28 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
Python如何操作docker redis过程解析
2020/08/10 Python
医学专业毕业生个人的求职信
2013/12/04 职场文书
日语专业个人求职信范文
2014/02/02 职场文书
好听的队名和口号
2014/06/09 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书
党员反邪教心得体会
2016/01/15 职场文书
Python的三个重要函数详解
2022/01/18 Python
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript