【寒假实习备战day4】冒泡排序算法的学习(一)

简单的自我介绍

我是一名双非大二学生,目前学习方向为Java后端,快速学习并学到了springboot,并和实验室的朋友做了一个简单的微信小程序,想在寒假找份有关互联网的实习,打算海投,城市和公司暂时没有特别强烈的意向,我会再次牢固的复习一遍Java整套学习知识,并且开始补充算法知识刷算法题,来备战这次寒假实习,并且想报名参加蓝桥杯Java B组的比赛,希望我的一些学习笔记能为你带来一些帮助,这次给大家带来的是冒泡排序的算法学习,同时也感谢牛客uu对我的帮助,在昨天的动态解答中,坚定了我的选择,尽管已经直到Java之路肯定忐忑不易,但也确实是目前比较适合我的道路了。

上期题目测试答案

第一题:

可以看出这和我最开始举得例子基本一致

第一次 我们的l=0 r=12,所以mid=(l+r)/2=6 ,此时mid下标对应的元素是31小于48 所以我们令l=mid+1

第二次 我们的l=7 r=12,所以mid=(l+r)/2=9,此时mid下标对应的元素是45小于48 所以我们令l=mid+1

第三次我们的l=10 r=12,所以mid=(l+r)/2=11,此时mid下标对应的元素是49大于48 所以我们令r=mid-1

第四次我们的l=10 r=10,所以mid=(l+r)/2=10,此时mid下标对应的元素是48 即我们需要的元素

自此我们找到元素48共经过四次比较

第二题与第一题基本一样 所以不在赘述

第三题:

因为二分查找的时间复杂度是l o g 2 N log_2^Nlog
2
N

,所以此题的答案就是l o g 2 128 log_2 128log
2

128 等于7

注意:如果 l o g 2 N log_2^Nlog
2
N

的结果不是整数 则向下取整+1

什么是冒泡排序

冒泡排序是一种排序算法与相邻元素比较 然后交换 因为每一趟的最大/最小值 最终会排序到当前趟的最后位置 所以形象的称为冒泡排序,是排序算法中比较基础的一种,这就意味着我们必须掌握。

算法原理

对本数列 {5,2,7,4,1,3,8,9} 进行冒泡排序 顺序从小到大

第一趟

2 5 4 1 3 7 8 9,比较了7次,确定了9是当前趟最后位

第二趟

2 4 1 3 5 7 8 9,比较了6次,确定了8是当前趟最后位

第三趟

2 1 3 4 5 7 8 9,比较了5次,确定了7是当前趟最后位

第四趟

1 2 3 4 5 7 8 9,比较了4次,确定了5是当前趟最后位

第五趟

1 2 3 4 5 7 8 9,比较了3次,确定了4是当前趟最后位

第六趟

1 2 3 4 5 7 8 9,比较了2次,确定了3是当前趟最后位

第七趟

1 2 3 4 5 7 8 9,比较了1次,确定了2是当前趟最后位

完成排序

第一:我们发现了 8个元素 需要7趟排序。

第二:我们发现了 每趟排序只需要比较当前趟没有确定的元素 确定的元素无需比较,即每趟只需比较 元素个数-当前趟数 例如第三趟我们只需要比较 8-3次 因为前两趟已经确定两个值 我们只需要在剩下六个中比较五次 就可以确定第三趟的极值。

第三:我们发现了第四趟就已经排序完成了,但仍然又比较了三趟,这是我们的优化点之一,优化趟数。

第四:我们发现了每趟的次数也可以优化,例如第二趟我们比较了六次,但其实在第一趟比较时就已经确定了7 8 9三个最大值,所以我们其实只用比较剩下5个元素,也就是只需要比较四次,因为我们每趟的次数也减少,所以我们最终的趟数也会随之减少。

#实习##Java##算法##双非##寒假实习#
全部评论
这些不是一般大二上学期数据结构应该学的么?我也25的
点赞 回复 分享
发布于 2022-12-21 12:47 广东

相关推荐

评论
3
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务