算法之冒泡排序和选择排序

冒泡排序:
1.原理:从前往后,比较相邻的两个数,如果前边的数大于后边的数,就相互交换。
2.算法:
先假设数组arr
在这里插入图片描述
然后,通过循环比较出最大的数,相互交换,最终放于了最后位置。
在这里插入图片描述
这是通过控制台打印出来的结果。
在这里插入图片描述
通过一次循环可见不是咱们想要的结果,还需要通过多次循环才能达到咱们想要的排序。假设中的数组有5个单元,比到最后两个数,不需要再循环,只需要四次循环可以达到想要的结果。
但是为了简便,我们需要再加上一个外循环,让它循环4次。即(数组个数-1)次。
在这里插入图片描述

这是通过控制台打印出来的结果。
在这里插入图片描述
3.优化
内层优化1,在循环过程中,找到第一个最大的数通过比较,交换位置,我们只需要循环到倒数第二个数即可,它可以通过相邻位置比较,交换位置。因此次数可以-1;
内层优化2,我们添加外层循环后,内层循环中已经找到的,通过比较的,最大的数不需要再通过比较。(如:假设的该数组有5个单元,第一次循环已经找到一个最大的数,在第二次循环中,该数不需要再进行比较,我们又可以少循环1次,第三次循环中,我们可以少循环2次,第四次循环中我们可以少循环3次…),为了优化此效果,我们需要通过外层循环的结合,外层循环目前是从1开始的,内层循环在第一次循环中可以减少1-1次,第二次循环可以减少2-1次…外层循环的自变量是j,则每次循环可以减少j-1次。
外层优化,内层优化2比较复杂,只需让循环四次写成从0开始到3结束,即外层循环可以写成j=0;j<=arr.length-1 内层优化2可以精简,每次循环就可以减少j次。
代码:
在这里插入图片描述
这是控制台输出的结果
在这里插入图片描述
选择排序:
1.原理:
第一步:假设第一个数字最小,然后从第二个数开始与假设的最小的数进行比较,如果比它小,就标记,接着与标记的数继续往后比,比到最后一个,找出最小的数,记住该数对应的索引值。
第二步:如果该数的索引值不是最初假设的最小的数的索引值,就交换数值,即将实际上最小的数值放到假定的最小的数的索引位置。继续循环到结束。
2.算法:
在这里插入图片描述
这是控制台打印出的结果
在这里插入图片描述
设定一个外循环,让它继续
第一次循环设定的第一个数为最小值,是从第一个数进行交换,
第二次循环设定的第二个数是最小值,是从第二个数进行交换,
.
.
.
所以外循环j是从0开始,到索引值结束,
设定的最小值min应该改变,改变为j
需要改动内循环i的起始位置,起始位置应该改变为j
之前写0的改成j
在这里插入图片描述
这是输出框打印的结果

3.优化
外层循环中,如果五个单元,我们循环4次就可以,则外层循环j-1次循环
内层循环中,第一个位置和第一个位置不比较,所以起始位置应该为j+1,
在这里插入图片描述
这是输出框打印的结果
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值