开发者社区> 问答> 正文

冒泡排序与选择排序有什么区别

冒泡排序与选择排序有什么区别

展开
收起
知与谁同 2018-07-19 18:51:34 3716 0
3 条回答
写回答
取消 提交回答
  • Nothing for nothing.
    首先,两种算法都是每一轮选出一个最大(小)值,关键是最值存放的位置。区别就是冒泡选出的最值从length-1开始放,然后是length-2,length-3.....(数组下标),选择排序选出的最值是从数组下标0开始放,接着是1,2,3....。所以算法才有不同的表现形式。望采纳
    2019-07-17 22:50:13
    赞同 展开评论 打赏
  • 云栖社区聚能聊、问答管理员~发福利、搞怪,八卦我来,论技术、发话题、写博客你上!
      冒泡,选择,希尔...等排序算法是前辈们总结出来的经典排序算法,它们各有自己的优缺点,适合不同情况下使用。比如冒泡排序实现起来简单,如果待排序数据量小,并且对效率要求不高时,完全可以满足;希尔排序效率比冒泡高,但是算法实现稍复杂,一般人们不愿意去实现它。
    我认为排序算法的根本区别是它们排序的效率,就是排序消耗的时间和空间。你如果要比较冒泡排序和选择排序的区别,就去分析它们排序时分别占用的时间和空间。老实说,这些内容算法书都有讲解,但是我从来没有认真去研究分析过,也没有真的去计算过一个算法的效率值。如果那位对这方面熟悉,不妨帮 @飞行苏 计算下。 不过根据对算法的理解,冒泡排序的效率不会大于选择排序
    2019-07-17 22:50:13
    赞同 展开评论 打赏
  • 是这样的
    区别主要在交换的方式上
    每一轮都把最大或最小的元素筛选出来放在相应的位置上
    这是相同的
    但是
    对于每一轮
    比如第一轮
    要把1~n 中最大的那个放到n这个位置
    冒泡法每次比较和移动相邻的两项
    而选择排序每次交换当前项和第n项
    我把代码写出来你就懂了:
    冒泡:
    for i:=1 to n-1 do
    if (a[i]>a[i+1]) then swap(i,i+1);
    选择:
    for i:=1 to n-1 do
    if (a[i]>a[n]) then swap(i,n);
    (swap 表示交换)

    总的来说,两种排序比较的次数是相同的
    但交换的次数,选择排序是更少的
    虽然两者的时间复杂度都是 O(n^2)
    但通常,选择排序更快一点
    2019-07-17 22:50:13
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载