枚举与排序心得

枚举与排序心得

知识点

枚举与排序

  今天终于学到了排序,排序是算法里面的一部分,我自己还是一个比较爱思考的人,算法有很多种,今天学了两个排序算法“冒泡排序”与“选择排序”,算法这种东西难度挺大的不过面试的时候也是经常面的,算法不好理解,不理解就没办法写代码

枚举
  枚举这块我自己感觉后期也是常用的一个,之前上网搜文章看都是说常量使用枚举,老师这块没讲那么多,我自己有搜索了点学了一下
  枚举是一种受限制的类,并且具有自己的方法,它自己也是拥有方法的。
扩展
  其实我自己之前写代码总是不规范,所有读了代码规范这方面的书“码出高效”,看完书后再写代码你就会感觉写出来的代码高级的很😂,当然了学代码的规范也不是显的高级,因为有些不规范总会导致代码的小问题,并且代码自己需要看别人也是要看的,所以写规范很重要,扯这么多规范和枚举好像没什么关系,其实不,规范中有一项关于魔法值的问题,魔法值是什么那?在代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义,这种的数值就是魔法值,魔法值出现的次数太多就会容易搞混,这个时候使用规范的写法就是将这些数值都换做常量,常量是不变的,我之前常量都是写到接口中,用的时候实现接口用常量,但上网看了好多文章都提到常量最好是放在枚举类中,学过枚举类后我的常量以后肯定是会在枚举类中啦。
  其实关于为什么常量写枚举里我也是小有了解,我们使用最普通的方式定义常量,用的时候其实非常的不直观的,还是写在枚举类中直观点。

排序
  说到算法肯定有人就比较排斥,想着都是什么数学的东西了,那你要是这样想也没有错,算法这块理解不太容易,而且算法又非常之多。
  就今天学习的冒泡排序,从名字你就应该把他理解成水中气泡,从物理学的气压方面说…(不扯了😂),水里气泡大多都是大的气泡在上,这也是物理学,冒泡排序可以理解为就是将大的气泡给排到上面,而从代码的角度看就是从一堆数中将大的数拿出来方法最后,顺序那就是从最开始的一个数值和后面的数对比,如果小了就拿着大的继续向后去排这些数,这些数要一个一个的对比。
  虽然说起来容易但做代码的时候还是比较难的。

发现问题

  这边给大家扩展个老师没讲过的知识,时间复杂度与空间复杂度,听到这么专业的词是不是怕了,哈哈哈哈,没错是挺专业的,之前在力扣上做算法题看他们都写得这些个什么复杂度,感觉挺好玩就了解了点。
  时间复杂度大概可以理解为你的代码在虚拟机运行得时间,代码中使用一个for循环复杂度就是一个n,再嵌套一个for循环就是n^2了。
  空间复杂度就是代码在虚拟机里使用得内存了,算法写出来有太多方式了,当时时间与空间使用越小得解题思路才是最佳的。
?问题?
  现在有一杯可乐和一杯雪碧怎么将其换到各自不同的杯子里?
老师上课将的是再拿出一个杯子,将雪碧倒入空杯再将可乐倒入雪碧杯里,最后将雪碧倒入可乐杯里,这样就实现了互换。“将a b中的值交换”
n=a
a=b
b=n

解决问题

  这个问题就是冒泡排序里使用的交换数值问题,上面的虽然可以实现换值,但从空间复杂度来说会令开辟一块空间(空杯)。
其实还有一种方法:
a=a+b
b=a-b
a=a-b
  当然我上网搜这种方法,有的人说这种方法好像有瑕疵,不过目前我还没有遇到。

每日收获

  学习算法需要先将这种算法了解了再去写代码,而且你的这个思维还要清晰,今天学的两个算法都是非常有用的,挺好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

week@eight

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值