放序的次数按如下方法确定
一、冒泡排序
冒泡排序的原理是将相邻元素比较,小的往左移动,大的往右,整个过程就像是水中气泡上浮。在相邻两个元素的比较中,如果相等,则没有必要交换。这一点,保证了冒泡排序的稳定性。无论相等的元素之前处于什么位置,在冒泡的效果下, 最终会相邻,只要相等元素不交换,就不会改变相对位置。所以冒泡排序是稳定的。
对于n个元素,相邻元素均要比较,共有(n-1)次。经过一回合冒泡过程后,最大元素沉淀到最右位置。第二回合, 只剩下(n-1)个元素,只需要比较(n-2)次。依次类推,其他比较次数为(n-3),......,2,1. 所以总共比较次数为n(n-1)/2,而且是固定为这个数目.
至于交换次数,这个取决于初始序列的逆序数。对于数组A[1,...,n],如果对于i<j有A[i]>A[j],则称(A[i],A[j])是一个逆序对,序列中逆序对的个数称为逆序数。
冒泡排序每次交换,只改变了相邻两元素的位置,不影响和其他元素之间的逆序关系,因而,逆序数只减1。所以,冒泡排序交换次数等于初始序列的逆序数。
二、选择排序
选择排序的原理是每回合找出最小元素,然后交换到前面位置。
选择排序是不稳定的排序算法,不稳定主要产生于交换。交换过程可能改变相同元素的相对位置,举个例子,序列(5,8,5,1),最小数是1,第一次交换,得到(1,8,5,5),元素5相对位置已经发生变化。
下面是比较次数。对于n个元素的序列,找出最小元素需要比较(n-1)次。第一回合后,序列只剩下(n-1)个元素,下一次找最小元素还需要(n-2)次比较。最后直到2个元素需要比较1次。所以最后比较次数总共为(n-1)+(n-2)+...+1=n(n-1)/2,且固定不变。
每一回合最多交换一次,有(n-1)回合,所以最多交换次数为(n-1
温馨提示:答案为网友推荐,仅供参考