一道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 07 Javascript
Javascript的各种节点操作实例演示代码
Jun 27 Javascript
javascript中for/in循环及使用技巧
Sep 01 Javascript
详解Angular开发中的登陆与身份验证
Jul 27 Javascript
RequireJS简易绘图程序开发
Oct 28 Javascript
走进AngularJs之过滤器(filter)详解
Feb 17 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
May 27 Javascript
基于复选框demo(分享)
Sep 27 Javascript
AngularJS实现的自定义过滤器简单示例
Feb 02 Javascript
详解在HTTPS 项目中使用百度地图 API
Apr 26 Javascript
Vue数字输入框组件示例代码详解
Jan 15 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
Aug 12 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
改进的IP计数器
2006/10/09 PHP
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
php中Ctype函数用法详解
2014/12/09 PHP
PHP弹出对话框技巧详细解读
2015/09/26 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
关于JavaScript中string 的replace
2013/04/12 Javascript
js弹出div并显示遮罩层
2014/02/12 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
jquery实现左右轮播图效果
2017/09/28 jQuery
浅谈React中组件间抽象
2018/01/27 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
微信小程序实现留言板(Storage)
2018/11/02 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
[01:06]DOTA2小知识课堂 Ep.02 吹风竟可解梦境缠绕
2019/12/05 DOTA
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
安装PyInstaller失败问题解决
2019/12/14 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
美国儿童服装、家具和玩具精品店:Maisonette
2019/11/24 全球购物
Linux开机引导的步骤是什么
2015/10/19 面试题
大一新生军训时的自我评价分享
2013/12/05 职场文书
给医务人员表扬信
2014/01/12 职场文书
优秀毕业自我鉴定
2014/02/15 职场文书
医药销售自荐书
2014/05/29 职场文书
感恩老师演讲稿400字
2014/08/28 职场文书
2014年统计工作总结
2014/11/21 职场文书
青年教师个人总结
2015/02/11 职场文书
采购部年度工作总结
2015/08/13 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
iPhone13 Pro外观确定,升级4800万镜头,4月20日发新品
2021/04/15 数码科技
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js