首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我的选择排序没有交换值?

选择排序是一种简单直观的排序算法,其基本思想是每次从未排序的元素中选择最小(或最大)的元素,放到已排序序列的末尾。然而,如果你的选择排序没有交换值,可能是由于以下几个原因:

  1. 代码逻辑错误:请检查你的代码实现,确保在选择最小(或最大)元素后,进行了交换操作。可能是你在代码中遗漏了交换的步骤,导致排序结果不正确。
  2. 数组索引错误:在选择排序中,需要通过索引来交换元素的位置。请确保你在交换元素时使用了正确的索引,以避免出现错误的结果。
  3. 数据重复或有序:如果你的数据中存在重复元素,或者已经是有序的,选择排序可能不会进行交换操作。因为选择排序是通过找到最小(或最大)元素来进行交换的,如果数据中没有更小(或更大)的元素,就不会进行交换。
  4. 数据量较小:选择排序的时间复杂度为O(n^2),在数据量较小的情况下,可能很快就完成了排序,导致你没有观察到交换的过程。你可以尝试增加数据量,或者在代码中添加输出语句来验证是否进行了交换操作。

总之,如果你的选择排序没有交换值,建议仔细检查代码逻辑、数组索引和数据特点,以确保正确实现了选择排序算法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么处理排序后的数组比没有排序的快?想过没有?

就比如说这个:“为什么处理排序后的数组比没有排序的快?”...毫无疑问,直观印象里,排序后的数组处理起来就是要比没有排序的快,甚至不需要理由,就好像我们知道“夏天吃冰激凌就是爽,冬天穿羽绒服就是暖和”一样。...但本着“知其然知其所以然”的态度,我们确实需要去搞清楚到底是为什么?...未排序的时候,等待结果的时候让我有一种担心:什么时候结束啊?不会结束不了吧? 读者朋友们有没有玩过火炬之光啊?...完全没有办法预测。 对比过后,就能发现,排序后的数据在遇到分支预测的时候,能够轻松地过滤掉 50% 的数据,对吧?是有规律可循的。 那假如说不想排序,又想节省时间,有没有办法呢?

88010

“我的‘换机焦虑’,选择太多等于没有选择”

一位朋友在问及换机需求及选择时,他是这么说的。 “再加上,现在我笔记本电脑是Mac,耳机也是苹果的,生态绑得死死的,换台手机意味着其他硬件也要跟着换,划不来也没必要。”...同样因为系统选择苹果的还有不少,“可以不买苹果,但前提是出现比苹果更稳定流畅的手机系统,至少到目前为止还没有。...现在国产品牌的旗舰机普遍4、5千起步,在系统、芯片、价格都优于国产品牌时,为什么不选苹果呢?”...比如有用户一开始瞄准的游戏性能,但发现加个几百又能找到一台影像系统更强的,再加个几百又能得到一台内存更大的,加来加去发现总能在另一个品牌能买到更有吸引力但同时又有缺憾的配置,再一看价格4、5千了,那为什么不选择无亮点但无缺憾的苹果...回过头来看,高端旗舰领域为什么绝大多数都选择苹果,国产品牌缺乏太大差异化的配置、同质化的能力、相近的价格再加上没有太多惊喜的外观设计,即便再多选择,也相当于没有选择。

57430
  • 为什么我的HibernateDaoSupport没有注入SessionFactory

    前言 很早之前,就打算写这一篇文章了(其实有很多源码分析的文章打算写,但是自己太拖延了导致很多文章搁浅了)。我为什么要写这一文章呢?...事情的缘由是同事在SpringBoot项目中有一个A类继承HibernateDaoSupport,但是程序运行总是抛出没有成功注入SessionFactory的错误,后来我debug Spring源码解决了这个问题...这个错误的原因是A类的RootBeanDefinition中的autowireMode的值为0,在AbstractAutowireCapableBeanFactory类中的populateBean方法中没有执行到...将属性的值注入到MyBaseDao中。...beanFactory)方法中不要使用beanFactory.getBean()会造成类性早熟,最终的后果就是类中的一些属性没有成功注入。

    3.1K10

    Spring容器里为什么没有我需要的Bean?

    Spring容器里为什么没有我需要的Bean?...,看着小菜在沸点评论区不停的滑动,似乎在寻找着什么大瓜 此时的小菜似乎察觉到气氛不太对劲,身后似乎有人,于是飞快的按下 Windows + 1 弹出Idea的开发界面 此时,项目经理开口道:小菜啊,这里有个紧急需求...没过多久,小菜就把需求都搞定了,于是启动服务开始测试 小菜打开测试工具就开始测试接口,但是怎么测试都是404,一开始小菜还以为url写错了,但是检测后发现并没有写错 经过小菜漫长的排查,终于发现了问题:...,并把组件加入到容器中,由于没有配置**basePackages**字段,于是只会扫描当前包下的组件** 当前包也就是com.caicaijava.springbooteasyframeworks 于是...菜菜的后端私房菜

    11121

    【漫画】为什么说O(n)复杂度的基数排序没有快速排序快?

    老大:我简单给你讲下吧,你学过那么多排序,估计一看就懂了。...这种方法确实可以减少比较的次数,不过请大家注意,在每个小部分的排序中,我们也是需要10个桶来将他们进行排序,最后导致的结果就是,每个不同值的元素都会占据一个“桶”,如果你有1000个元素,并且1000个元素都是不同值的话...1、基数排序是一种用空间换时间的排序算法,数据量越大,额外的空间就越大? 我的想法:我觉得基数排序并非是一种时间换空间的排序,也就是说,数据量越大,额外的空间并非就越大。...因为在把元素放进桶的时候,是完全可以用指针指向这个元素的,也就是说,只有初始的那些桶才算是额外的空间。 2、居然额外空间不是限制基数排序速度的原因,那为啥基数排序没有快速排序快呢?...对于这样的问题,我只能建议你,自己根据不同的场景,撸几行代码,自己测试一下。 如果你问我,哪个排序在实际中用的更多,那么,我选快速排序。 文章讲这里,也结束了,如果你有什么其它想法,欢迎后台来骚扰。

    74910

    如此多的深度学习框架,为什么我选择PyTorch?

    由于其稳定、出众的性能,不少公司还在使用Caffe部署模型。Caffe2尽管做了许多改进,但是还远没有达到替代Caffe的地步。...由于MXNet最初由一群学生开发,缺乏商业应用,极大地限制了MXNet的使用。2016年11月,MXNet被AWS正式选择为其云计算的官方深度学习平台。...但就框架本身的质量而言,CNTK表现得比较均衡,没有明显的短板,并且在语音领域效果比较突出。 点评:社区不够活跃,但是性能突出,擅长语音方面的相关研究。 7 ....为什么选择PyTorch 这么多深度学习框架,为什么选择PyTorch呢? 因为PyTorch是当前难得的简洁优雅且高效快速的框架。在笔者眼里,PyTorch达到目前深度学习框架的最高水平。...当前开源的框架中,没有哪一个框架能够在灵活性、易用性、速度这三个方面有两个能同时超过PyTorch。下面是许多研究人员选择PyTorch的原因。

    1.7K20

    为什么我用了Redis之后,系统的性能却没有提升

    很多时候,我们在面对一些热点数据的时候,通常会选择将热点数据放到redis中,以减少数据库的查询,减轻数据库的压力。但是如果我们使用redis的方式不对,那么可能导致系统的性能不升反降。...使用缓存的场景不正确 我们知道redis是基于内存实现的,所以速度会非常快,我们通常会将热点数据放到redis中,以减少对数据库的压力。...但是我们为了保证缓存与数据库的数据一致性,在数据进行修改的时候,我们就需要对缓存进行维护。 所以如果数据的变更很频繁的话,就需要对缓存进行频繁的维护,缓存的命中率也会特别低。...对于字符串类型来说单个value值(20k以上)过大,hash、list、set、zset元素个数过多(超过5000个)我们就认为它是一个bigkey。...如果我们选择appendfsync always的话,虽然数据的安全性高,但是每次写入都要刷盘会导致redis的性能很大程度的降低,所以我们一般会选择appendfsync everysec的策略来对数据进行持久化

    1.9K10

    CPS推广:为什么我的佣金还没有到账呢

    CPS推广奖励的佣金,目前无法直接后台提现,需要在次月月结之后,由财务系统统一打款到银行,即推广者后台所填写的银行账号,一般上月佣金,次月月末到账,具体时间以银行到账为准。...点击登录推广后台,查看银行信息:https://console.cloud.tencent.com/spread/income 问:为什么我的佣金没有到账呢?...佣金次月月结,当月推广订单的佣金预计次月月底的28~31日到账。...如:11月份的推广佣金,需要等到该月结束,次月月结即12月,核算11月推广的佣金,扣减掉退款降配订单的佣金,确定11月总到账佣金,确定12月推广的积分,月结结束后更新12月的会员星级,最后财务流程付款,...即:实收推广佣金=应收推广佣金-代扣税费(如有)点击查看税费计算说明 问:在哪里查看我的佣金收入呢? 目前的CPS推广会员积分体系,根据月结佣金当月的会员星级,佣金分期支付。

    10.7K60

    #PY小贴士# 抓下来的网页为什么没有我要的内容?

    刚刚接触爬虫的同学常会遇到这样的疑问: 为什么网页上面有的信息,我用代码抓下来的里面就没有,也没有报错?...除开请求本身失败或被反爬的情况外,通常这种问题的原因其实是: 页面上本来就没有你要的内容! 那么网页上的内容是哪里来的?...具体细节我不展开了,你可以网上去按我给到的关键字去搜索相关内容,下次我也会专门发下这方面的讲解文章。 那开发者工具里为什么又会在代码里显示出这些内容呢?...你若需要查看URL对应的原始代码,应右键选择“查看源代码”。而寻找你要的数据请求,则应在开发者工具的网络(Network)里进行检索。(如下图所示) ?...如果你在编程学习中有疑问,可选择以下方式向我们提问: 1. 加入码上行动答疑群(最及时响应) 2. 加入知识星球 https://t.zsxq.com/IiAiiQj 3.

    2.1K20

    为什么我的数据不按顺序排序原来如此 | Java Debug 笔记

    我的接口返回的数据顺序总是不固定问题描述====我在开发突发奇想。将表头信息也给查出来一并返回给前端了。但是正因为这一举动却带来嘲讽。...结果很明显我们写入的顺序是a、d、b、c、e 但是显示出来的顺序缺失a、b、c、d、e 。后来网上翻阅了一下资料说HashMap 是不会按照写入顺序排序的。...HashMap 的key的排序是按照key的hash值进行排序的最近翻看了下HashMap的源码了解了其内部的元素存储原理才明白这个道理。此时才知其所以然。...感觉有点排序的感觉当时为了解决问题就决定尝试一把。结果是完美的。bug解决收工回家。对应刚入行的我还是很有成就感的。时隔多年现在又重新收拾了下自己的bug。...决定一探究竟为什么LinkedHashMap 可以实现按照写入顺序排序。通过结构图我们清楚看到他是HashMap的子类。所以他的存储结构和HashMap基本上是一样的。

    31510

    还记得当初为什么选择计算机?我的代码人生旅程‍

    还记得当初为什么选择计算机?我的代码人生旅程‍ 摘要 在这篇博客中,我将探讨计算机科学的魅力、编程的乐趣和技术对个人成长的影响。...引言 大家好,我是猫头虎博主‍,今天和大家分享我的计算机之旅。自从我选择了计算机,我的生活就像是打开了一扇通往未知世界的大门。让我们一起探索这个充满可能的领域吧! 1. 我为什么选择计算机行业?...1.2 梦想与现实的碰撞 选择计算机专业,我梦想着成为一名创造奇迹的程序员。然而,现实总是充满挑战。从学习复杂的算法到调试似乎永远也解决不了的bug,每一步都充满了挑战。 2....2.2 从学习者到分享者 我开始撰写技术博客,分享我在这个领域的所学所感。我希望我的经验能够帮助到正如当年的我一样的编程初学者。 3. 计算机对我的人生道路有何帮助?...3.2 开阔视野,连接世界 计算机科学让我认识到了这个世界的无限可能。我通过网络认识了来自世界各地的朋友,交流技术,分享经验。 小结 计算机不仅是我的职业,更是我探索世界的工具。

    10510

    Java 快速排序 关于起始方向的选择问题 为什么一定要从右边开始

    这是因为快速排序从右边开始的原因是因为选择的基准值key一般都是最左边的元素。...假设左哨兵为i 右哨兵为j 选择的key为最左边的元素 也就是说 当首先从右边开始先执行时,循环的条件是: while (i = key) j--; 最后i、j 停留的位置的值肯定是要...& array[i] >= key) i++; 假如key在左,先从右边开始 最后停留的值肯定是大于key的值 也就是交换后大于key的放在key左边 小于key的放在key右边。...---- 一个数组为:6 1 2 7 9 3 4 5 10 8 图片摘至啊哈算法: 先从右往左: 前面几轮查找不贴了,到i==j时与基准数进行交换,交换之后保证左边的数都小于基准值右边的数都大于基准值...交换完成并不能保证所有左边的值都小于基准数,因此当key设置在左侧时应当从右开始向左查找

    2.7K10

    图形编辑器开发:为什么我选择用 transform 矩阵表达图形的变形?

    然后再补上了图形的翻转的支持,以及斜切的支持。图形的变形操作算是补完了。 这里我简单说说这么做的原因。...虽说貌似可以补上一个 skewX 和 skewY 属性,但和 rotation 有一些冲突,后面会说为什么。 下面是 Figma 缩放多个图形的效果。...所以这里我把图形的 x 和 y 属性也丢掉了,默认为 (0, 0),放到 tx 和 ty 上了。 rotation 值如果对应旋转矩阵,可根据特性求。...计算 rotation,我们可以选择对一个基准方向的向量(比如 (1, 0)),应用 transform 得到新向量,作为这个图形的方向向量,计算出对应的 rotation。...最后 选择 transform 矩阵的一些优点: 它是更底层的表达,能够非常精炼地表达一个图形的形变(虽然一眼看过去不是很直观); 同时基于矩阵运算,也很方便计算二次形变结果,左乘一个新的变形矩阵即可;

    15510

    为什么我代码里面选择top1000的sd基因绘制热图呢

    实际上写完了这个全网最好的差异分析代码:免费的数据分析付费的成品代码 我就可以收工用来,但是永远不能低估粉丝的疑惑数量,任何一个细节都会被拿出来剖析。...和npc两个分组非常明显的差异 PS:如果你的转录组实验分析报告没有这三张图,就把我们生信技能树的这篇教程甩在他脸上,让他瞧瞧,学习下转录组数据分析。...为什么挑选top1000的sd基因绘制热图 我这个热图是为了说明本分组是否合理,就是看样本的距离,这个时候你如果需要理解距离,那么你需要学习非常多细节知识。...maximum 切比雪夫距离 manhattan 绝对值距离 canberra Lance 距离 minkowski 明科夫斯基距离,使用时要指定p值 binary...和npc两个分组非常明显的差异 为什么选择top1000的sd基因绘制热图其实就是个人爱好,你可以探索top500,1000,2000,5000是否有区别。

    1.7K10

    为什么我放弃了运维必学必会的 Python,而选择了更加高大上的 Go?

    没有什么比一门新的编程语言更令开发者兴奋了,不是么? 因此,我在 4、5 个月之前开始学习 Go。在这里我将告诉你,你为什么也要学习这门新语言。...在这篇文章中,我不打算教你怎样写 “Hello World!!”。网上有许多其他的文章会教你。我将阐述软硬件发展的现状以及为什么我们要学习像 Go 这样的新语言?...如今,我的 2016款 MacBook Pro[5] 的时钟速度为 2.9 GHz。因此,差不多十年,原始处理能力都没有太多的增加。你可以在下图中看到处理能力的增长与时间的关系。 ?...用 Go 编写的代码易于维护 我告诉你一件事,Go 没有像其他语言一样疯狂于编程语法,它的语法非常整洁。...如果你没有任何学习 Go 的计划,我将仍然会说硬件的限制会给我们带来压力,软件开发者应该写超高效的代码。开发者应该理解硬件并相应的优化他们的程序。

    1.3K10

    有没有好奇过路由器宽带拨号的mtu值为什么是1492呢?了解MTU与IP分片

    MTU与IP分片(可选内容了解) 这里来讲一个比较有趣的内容,相信大家都有设置过家用路由器的经历,不知道有没有发现一个事情,在设置拨号的时候,里面有一个MTU,值通常是1492或者1480,如果接入方式改为...假设某一天,外网的对接方式变了,变成了拨号的形式,正常设置后,发现打开网页很慢或者打不开,咨询路由器客服后,把MTU值改成1492或者更小点,惊奇的事情发生了,都能正常访问了,这就回到之前的问题了,为什么现在的路由器...MTU值为什么是1500 这个是了解64字节的由来,是因为早期工作方式的原因(CSMA/CD),那1500字节又是什么原因呢?...出现这个问题是因为早期以太网通过Hub这些设备工作,处于共享方式,效率很低,而现在的网络早已不是10M的网络了,交换机已经支持1G,10G、100G,而且带宽独享,可以同时收发的特性,那有效传输效率跟质量提升了非常多...1480,并且是没有ICMP头部的(这个内容其实是包含了头部信息的,1480-8,1472,注意:只有第一个分片会携带头部信息,抓包没有显示出来)。

    1.6K10

    数据小白必看:七大排序算法超详细讲解(上)

    那么结果就只有13 13 23 12.没有将tmp插入到合适的位置中 2.为什么是将j下标的元素给j+1,而不是给i下标,j+1的元素不就是i下标的元素吗?...为什么i是++,而不是加gap? 仔细看上面的图,我的箭头是向右的,而不是向下的。因为虽然他分组了,但是每一组的元素还是要遍历进行交换的,所以是i++。...看上面的图,在left位置的时候,maxIndex已经是最大值的下标,在minIndex找到最小值的下标的时候,会将最小值与left位置进行交换,如果没有该代码,那么与maxIndex与right交换的元素...,是交换后的最小值,而最大值被交换到原本最小值的位置,也就是minIndex。...它是通过堆来进行选择排序。需要注意的是排升序要建立大堆,排降序要建立小堆。 堆排序的思路和图我就不在说啦,如果想看的话可以看我上一篇还在死磕算法?

    15210

    极客算法训练笔记(五),十大经典排序之冒泡,选择,插入排序

    排序算法衡量指标 关于排序算法的重要性我就不啰嗦了,不重要你也遇不到这篇文章。...经过某种排序算法排序之后,如果两个3的前后顺序没有改变,那我们就把这种排序算法叫作稳定的排序算法;如果前后顺序发生变化,那对应的排序算法就叫作不稳定的排序算法。 为什么要关注稳定性?...重复(元素个数-1)次 把第一个没有排序过的元素设置为最小值 遍历每个没有排序过的元素 如果元素 的最小值 将此元素设置成为新的最小值 将最小值和第一个没有排序过的位置交换...从动画当中可以看出,选择排序每次都要找剩余未排序元素中的最小值,并和前面的元素交换位置,这样破坏了稳定性。...下一篇写希尔,归并,快排和堆排序,还是按照这种格式,有收获的三连走起,欢迎关注我,我是小魔女阿甘,扫码有惊喜哦。

    54620
    领券