#美团云#数据结构和算法之简单排序算法

文章图片

文章图片

前言
最近一段时间工作忙的天昏地暗 , 加上又有一些个人的琐事 , 导致自己心态有点崩 , 颓废偷懒到现在 , 本着程序员在35岁有可能会被淘汰的压力下 , 又强迫自己开始去把之前丢掉的一些知识点给补起来(主要是一些大厂面试现在数据结构和算法成了必问题 , 别问我是怎么知道的 , 问就是不知道) 。
其实个人认为 , 对于大部分的程序猿来说 , 更多的是去写业务代码 , 只要你整个业务需求理解清楚了 , 再细心一点 , 多判断一些NPE的一些问题(不要相信前端传的值和DB查出来的值) , 基本上出bug的几率是很小的(性能问题除外).废话先扯到这 , 本来打算今天把简单排序和高级排序放到一篇文章里面总结下的 , 奈何下班到家比较迟 , 偷个懒 , 先从简单的排序算法更新吧 , 如:冒泡排序、选择排序和插入排序 。1、冒泡排序
冒泡排序原理
因为图画的比较丑 , 所以就只画了第一次排序的过程 , 后面的排序过程和第一次一样的 , 只是不同的是第二次排序就是从第二个元素开始挨个比较了 , 后面以此类推 , 一直到最后一个元素为止 , 话不多说 , 简单的来描述下图里面的内容:
1. 第一次排序的时候先拿第一个元素 4 和第二个元素 5做比较 , 这个时候发现4<5所以不用交换元素(这是从小到大排序的 , 如果从大到小排序则反过来) , 这个时候的排序还是 4 5 6 3 2 1
2. 这个时候在拿第二个元素5和第三个元素6做比较 , 5<6位置不做交换 ,
这个时候的位置排序还是 4 5 6 3 2 1
3. 再拿第三个元素6和第四个元素3做比较 , 这个时候发现6>3所以第三个元素的位置和第四个元素的位置要做交换 , 这个时候的顺序为 4 5 3 6 2 1
4. 接着在拿第四个元素6和第五个元素2做比较 , 发现6>2 , 所以这个时候又要交换位置 , 这个时候的位置排序为4 5 3 2 6 1
5. 然后再拿第五个元素 6 和第六个元素 1做比较 , 发现6>1需要交换位置 , 所以这个时候的位置排序为 4 5 3 2 1 6
6. 第一轮冒泡之间的两辆比较排序完成 , 找出来最大值为6 , 放到来最后一个元素的位置上 。
7. 后面依此类推 , 从第一个元素开始比较 , 一直到找出第二大的元素放在倒数第二个位置 , 第三大元素放到倒数第三个位置 , 一直到整个数据都是顺序的为止.
冒泡排序代码
2、选择排序
选择排序原理
简单解释下图里面的意思 , 图里面的大概意思是先假设第一个元素为最小的一个元素 , 依次跟数组中的每一个数据进行比较 , 如果比较的元素比我们假设的那个元素要大 , 则交换值并且将索引更新为最小索引的值
1. 先假设数组索引为0的元素为最小值索引
2. 拿索引值为0的元素值4和索引值为1的元素6进行比较 , 发现4<6不交换索引位置
3. 拿索引值为0的元素值4和索引值为2的元素2进行比较 , 发现4>2将我们假设的最小索引更新为2(索引2不是值)
4. 拿索引值为2的元素值2和索引值为3的元素值8比较 , 发现2 <8不交换索引位置
5. 拿索引值为2的元素值2和索引值为4的元素值12比较 , 发现2<12不交换索引位置
推荐阅读
- 「三星」拒绝马云王健林800万年薪招揽,一手创建美团的小伙,如今怎样了
- 爱小楠聊科技|三者缺一不可,手机拍照的未来在哪里?CMOS、芯片和算法
- [外卖员]美团新交通工具四轮车,引骑手争议,外卖员:这是要端掉咱的饭碗
- 『外卖小哥』美团外卖随随便便就月入过万?比进工厂强,听听过来人怎么说
- #腾讯#程序员想离职被领导拒绝:美团滴滴腾讯百度总监我都认识,你哪都去不了
- 少年帮|新氧升级算法加强人工审核规避黑产入侵,疫情加速消费决策线上化
- 美团:在美团上点外卖因为使用了优惠券就少给评论还被骂,这究竟是谁的错?
- 驱动之家|没办法啊!,华为:数据存储芯片、算法都是自己做
- 「美团」再见了,配送员!送货2.0时代来了!
- 『瞒天过海』美团外卖随随便便就月入过万?比进工厂强,听听过来人怎么说
