简单选择排序

选择排序顾名思义是选择,选择什么呢,选择的当前最小数的下标(数组)。
 如果有长度为11的数组。0号位为哨兵位。从1号下标开始,1号位不管是什么数,我就先把1号位的数字1赋值给最小值下标minIndex,1号位这个位置永远是最小的(排完序后它对应的数字也应该是最小的),然后把最小值下标的数(当前下标为1)与余下的9个数依次比较,如果比较途中,有数字比1号位的数小,那么我就把那个比最小值下标要小的 数 的下标赋值给minIndex,简单来说就是minIndex对应的值总是相对未排序列中最小的,
把最小值的下标更新到minIndex,一次循环完成前把minIndex的值与当前最小位的值交换,什么是当前最小位,第一次循环1号下标就是最小位啊,第二次循环2号下标就是最小位啊,第三次,第四次......
以下是代码:


以下是1万个随机数的排序结果及时间:


比较上一篇博客中的冒泡排序,显然速度快了许多。
但选择排序的时间复杂度在 最好 最坏 平均 时都是O(n^2)
看似比起冒泡还要差一些,但为什么速度反而又快了些呢。
这个问题你们可以思考下。

最后稳定性当然不稳定了,交换的时候跳来跳去的能稳定吗,举个例 5 5 2 第一个数是5 ,第二个也是5,第三个2,第一次循环5和2换位置,第一个5这不直接跳过去,2个5互换位置再也回不来了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值