JS排序算法

  • 基础排序
    • 冒泡排序
    • 选择排序
  • 面试题

基础排序

今天学习了数据结构,遇到了一个关于算法的面试题,然后从中想到了冒泡排序和选择排序对一个数组从小到大的排序的方法,今天分享给大家,顺便记录下我的学习经历吧。

冒泡排序

要求:对数组[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;
}

这样就实现了,题目要求的排序了。如果有喜欢前端的伙伴,可以关注我一下,我会每周不定期,分享前端的小知识点,一起学习进步。

一道JS算法面试题——冒泡、选择排序相关推荐

  1. 常见的js算法面试题收集,es6实现

    1.js 统计一个字符串出现频率最高的字母/数字 let str = 'asdfghjklaqwertyuiopiaia'; const strChar = str => {let string ...

  2. 一道百度算法面试题讲解

    题目: 假设有一个大水池,其容积为poolSize,还有n个彼此大小不同的水桶,分别是B1,B2,B3,B4,B5..Bn,放在一个数组中 .请给出水桶的所有组合,使得他们的容积之和刚好可以灌满整个水 ...

  3. 九章算法面试题86 合并排序数组

    原文网址 www.jiuzhang.com 问题详情 合并两个排序的整数数组A和B变成一个新的数组. 在线评测本题: http://www.lintcode.com/zh-cn/problem/mer ...

  4. 记一道超级简单的 Java 算法面试题,但无人通过

    点击上方蓝字设为星标 下面开始今天的学习- 作者:方志宏(已获作者授权转载,禁止二次转载) 来源:https://zhuanlan.zhihu.com/p/57859872 这可能是历史上最简单的一道 ...

  5. 记一道超级简单的算法面试题,90%的人没能完整答出来

    作者:方志宏(已获作者授权转载,禁止二次转载) 来源:https://zhuanlan.zhihu.com/p/57859872 这可能是历史上最简单的一道 Java 算法面试题了. 题目很简单,完成 ...

  6. 一道亚马逊算法面试题的情景分析

    阅读博客的朋友可以观看视频: http://study.163.com/course/courseMain.htm?courseId=1002942008 我们聚焦于一道亚马逊的算法面试题,通过分析该 ...

  7. 分享一道算法面试题和它的三种解法

    最近遇到了一道很有趣的算法面试题,乍一看逻辑很简单,O(N^2)时间复杂度的解决方式可以在常规语义下得到解决.但是O(N^2)时间复杂度之下缓慢的运行效率和重复的计算总让人觉得还有可以优化的空间.接下 ...

  8. 66 道前端算法面试题附思路分析助你查漏补缺

    大家好,我是漫步. 今天来分享一篇干货,前端关于算法的分析不多,下文列举了66道前端算法面试题,希望对你有所帮助. 作者:Eno_Yao https://segmentfault.com/a/1190 ...

  9. 微软的100道算法面试题(终结版)

    前言 数据结构与算法的重要性已不言而喻,最近,我整理出十大经典排序算法.五大常用算法总结,今天特意整理出微软面试的100题,若有不足之处,欢迎指正!由于篇幅过长,前30道题目写在上一篇,大家可以进我的 ...

最新文章

  1. Ubuntu 创建文件快捷方式 启动器
  2. BCH或许才是真正的未来
  3. 《实战突击:PHP项目开发案例整合(第2版)(含DVD光盘1张)》
  4. -f shell 模糊匹配_linux模糊查找一个文件的方法
  5. 【项目管理】工件清单说明
  6. AtCoder AGC022C Remainder Game (图论)
  7. 导出EXCEL2003
  8. 相亲有风险,且行且珍惜!| 今日最佳
  9. 高斯曲率求表面极值点
  10. Mysql根据顺序合并数据
  11. vlc-android编译流程
  12. python限制输入数字范围_关于python:如何限制Django模型中数字字段的最大值?
  13. python3 mysqldb查询_python3 pymysql查询结果包含字段名
  14. HBase 管理,性能调优
  15. 牛皮啊!竟然可以为Dubbo接口生成文档了!
  16. Easy RM to MP3 Converter漏洞分析报告
  17. 【springmvc】SpringMVC启动流程及源码分析
  18. 我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。
  19. VS 默认添加Web 为 vb语言
  20. 数据准确性和模型准确性

热门文章

  1. 树莓派上使用百度网盘
  2. Linux双显卡设置使用集显或独显
  3. 把冰糖葫芦做成大产业,她不过比别人多了一点“心”
  4. Scrum认证心得分享 | 外企项目经理的CSP-SM学习之旅心得及总结
  5. php+提交和重置按钮传值,JS提交和重置form表单
  6. 网络协议学习:等价多路径路由ECMP
  7. C语言实验题――一元二次方程 II
  8. 给中级程序员突破瓶颈的几大建议!让你秒变大牛!(建议收藏)
  9. 计算机组成原理乘法器实验报告,乘法器实验报告
  10. 图像处理:rgb2gray