冒泡排序VS选择排序

Posted 寒假失乐园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序VS选择排序相关的知识,希望对你有一定的参考价值。

(一)冒泡排序:相邻数组元素依次比较判断是否置换


通过相邻的两个数的比较, 根据需要决定是否将两个数互换位置, 然后将比较往后(或往前)推进. 例如, 要求从小到大排序,通过将两个数比较, 将较大的数置换到右边,如此不断循环将得到最值。

冒泡排序VS选择排序

代码实例:N个元素进行升序排序

For i = 1 to N-1

   For j = 1 to N-i

       If a(j) > a(j+1) Then ’降序:a(j) <a(j+1)

           t= a(j):a(j)= a(j+1):a(j+1)=t

      End If

   Next j

Next i

N个元素进行排序

比较次数为(n-1)*n/2, 数据交换次数最多(即最坏情况)(n-1)*n/2

     

冒泡排序VS选择排序


(二)选择排序:找到当前的最值的位置,判断是否置换

和冒泡排序不同, 选择排序使用标记最值所在位置的方式, 查找最值过程中不移动数的位置, 只是在最后将最值置换到顶端.

代码实例:N个元素进行升序排序

    For i=1 to N-1

        k = i

        For j=i+1 to N

       ’降序:a(j) >a(k) Then k=j

            If a(j)<a(k) Then k=j

        Next j

        If k<>i Then

            t=a(i):a(i)=a(k):a(k)=t

        End If

    Next i


N个元素进行排序:

比较次数为(n-1)*n/2;数据交换次数最多(即最坏情况)n-1


总结

相同点:

    都比较n-1轮; 比较的次数相同 (n-1)*n/2次

不同点:

    冒泡排序法是两两依次比较,并做交换,交换的次数多(最多(n-1)*n/2)。
    选择排序法是每次循环找出最值,循环结束后将最值调整到合适位置,交换的次数少(最多n-1)。

以上是关于冒泡排序VS选择排序的主要内容,如果未能解决你的问题,请参考以下文章

冒泡排序VS选择排序

冒泡排序法vs快速排序法(c#)

排序算法之冒泡选择插入排序(Java)

排序算法之冒泡选择插入排序(Java)

冒泡排序和选择排序

java编程的冒泡等排序示例