冒泡排序VS选择排序
Posted 寒假失乐园
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序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
(二)选择排序:找到当前的最值的位置,判断是否置换
和冒泡排序不同, 选择排序使用标记最值所在位置的方式, 查找最值过程中不移动数的位置, 只是在最后将最值置换到顶端.
代码实例: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选择排序的主要内容,如果未能解决你的问题,请参考以下文章