一道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 相关文章推荐
基础的prototype.js常用函数及其用法
Mar 10 Javascript
JavaScript 应用类库代码
Jun 02 Javascript
XHTML下,JS浮动代码失效的问题
Nov 12 Javascript
jQuery-ui中自动完成实现方法
Jun 10 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
May 04 Javascript
js获取客户端操作系统类型的方法【测试可用】
May 27 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
Nov 24 Javascript
解决layer弹层遮罩挡住窗体的问题
Aug 17 Javascript
教你如何编写Vue.js的单元测试的方法
Oct 17 Javascript
了解javascript中的Dom操作
May 27 Javascript
vue实现固定位置显示功能
May 30 Javascript
vue-cli4使用全局less文件中的变量配置操作
Oct 21 Javascript
吃通javascript正则表达式
Apr 21 #Javascript
Ajax是什么?Ajax高级用法之Axios技术
在HTML5 localStorage中存储对象的示例代码
Apr 21 #Javascript
canvas多重阴影发光效果实现
JavaScript+HTML实现学生信息管理系统
浅谈vue2的$refs在vue3组合式API中的替代方法
JS实现简单控制视频播放倍速的实例代码
You might like
PDO防注入原理分析以及注意事项
2015/02/25 PHP
PHP单链表的实现代码
2016/07/05 PHP
利用PHP生成CSV文件简单示例
2016/12/21 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
PHP getName()函数讲解
2019/02/03 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
JQuery实现表格中相同单元格合并示例代码
2013/06/26 Javascript
javascript 用函数语句和表达式定义函数的区别详解
2014/01/06 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
js闭包用法实例详解
2016/12/13 Javascript
浅析为什么a=&quot;abc&quot; 不等于 a=new String(&quot;abc&quot;)
2017/10/25 Javascript
JS实现获取word文档内容并输出显示到html页面示例
2018/06/23 Javascript
Vue数据双向绑定的深入探究
2018/11/27 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
python实现跨文件全局变量的方法
2014/07/07 Python
python中的代码编码格式转换问题
2015/06/10 Python
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
wxPython色环电阻计算器
2019/11/18 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
python实现从ftp上下载文件的实例方法
2020/07/19 Python
中层竞聘演讲稿
2014/01/09 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
服务员岗位职责
2015/02/03 职场文书
立项申请报告范本
2015/05/15 职场文书
趣味运动会广播稿
2015/08/19 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python
Python+Appium自动化测试的实战
2021/06/30 Python
浅谈css实现背景颜色半透明的两种方法
2021/12/06 HTML / CSS
python基础之//、/与%的区别详解
2022/06/10 Python