开发者社区> 问答> 正文

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

知与谁同 2018-07-19 18:51:34 368
冒泡排序与选择排序有什么区别
分享到
取消 提交回答
全部回答(3)
  • 美人迟暮
    2019-07-17 22:50:13
    首先,两种算法都是每一轮选出一个最大(小)值,关键是最值存放的位置。区别就是冒泡选出的最值从length-1开始放,然后是length-2,length-3.....(数组下标),选择排序选出的最值是从数组下标0开始放,接着是1,2,3....。所以算法才有不同的表现形式。望采纳
    0 0
  • 聚小编
    2019-07-17 22:50:13
      冒泡,选择,希尔...等排序算法是前辈们总结出来的经典排序算法,它们各有自己的优缺点,适合不同情况下使用。比如冒泡排序实现起来简单,如果待排序数据量小,并且对效率要求不高时,完全可以满足;希尔排序效率比冒泡高,但是算法实现稍复杂,一般人们不愿意去实现它。
    我认为排序算法的根本区别是它们排序的效率,就是排序消耗的时间和空间。你如果要比较冒泡排序和选择排序的区别,就去分析它们排序时分别占用的时间和空间。老实说,这些内容算法书都有讲解,但是我从来没有认真去研究分析过,也没有真的去计算过一个算法的效率值。如果那位对这方面熟悉,不妨帮 @飞行苏 计算下。 不过根据对算法的理解,冒泡排序的效率不会大于选择排序
    0 0
  • 寒凝雪
    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)
    但通常,选择排序更快一点
    0 0
添加回答
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章