快速排序 n为7

最好的情况是每次都能均匀的划分序列.例如 4,1,3,2,6,5,7,每次使用序列的第一个元素做枢轴.比较总次数为10次,交换3次,具体如下:第一次枢轴为4,序列划分为{2,1,3},4,{6,5,7}比较6次(4与每个元素比较一次),交换1次(4与2交换)第二次的两个序列枢轴分别为2和6,此时划分序列得{1},2,{3},4,{5},6,{7}比较4次(两个序列各比较两次),交换两次(1和2,6和5)第三次由于各个序列的元素都为1,因此排序完成得1,2,3,4,5,6,7

快速排序是先找到一个轴值,比较时把所有比轴值小的放到轴值的左边, 比轴值大的放到右边,再在两边各自选取轴值再按前面排序,直到完成 (1)已经排序完成,是最快的; (2)反序,需要将小于5的转移到5的左边,大于5的转移到5的右边,每个数都要经过比较,所以是最慢的 (3)轴值为9,需要将9右边的转移到左边,比较次数介于(1),(2)之间; (4)轴值为5,需要将左边的9转移到5的右边,3转移到5的左边; 总体比较次数(1)

1,2,3,4,5,6,7;三次,最好 就是第一次取到4,以4为列子,就是最好取到的数是位于中间大于左面3个,小于右边3个;第一次比较比4小的放左边,大的右边.然后第二次;以同样的方法再取,取到2,6最好啦;比较左右各一次;共2次.(这里我把左右比较用一个循环控制比较算做一次)n=15,就是俩个n=7就是3次了快排也有点像二路归并:从一个无序的序列中随机取出一个值q做为支点,然后把大于q的放到一边,小于q的放到q的另一边,然后再以q为分界点,分别对q的两边 进行排序(快排时直接再对q两边重新取支点,整理,再取支点,直到支点两旁都有序.也就是支点两旁只有一个数时)

1. 最好情况就是F(8,7,6,5,4,3,2,1),因为只要n - 1次比较即O(n)即可以结束排序2.最坏情况当然就是F(1,2,3,4,5,6,7,8),因为要进行(n - 1) * (1 + n - 1)* (n - 1)/ 2次比较才能完成排序相当于O(n^2)3.插入排序在F(1,2,3,4,5,6,7,8)时可以比快速排序高效,这个取决于具体的算法:例如插入排序将F(1,2,3,4,5,6,7,8)排成降序,此时每次比较时都从有序序列最右端的元素开始比较查询插入位置,此时其时间复杂度为O(n)

楼上说的是什么啊,最坏情况下,是整个序列都已经有序且完全倒序 ,此时,快速排序退化为冒泡排序,要比较n*(n-1)/2次才能完成 最好的情况下只需一次!

快速排序最坏的情况是初始序列已经有序,第1趟排序经过n-1次比较后,将第1个元素仍然定在原来的位置上,并得到一个长度为n-1的子序列;第2趟排序经过n-2次比较后,将第2个元素确定在它原来的位置上,又得到一个长度为n-2的子序列;以此类推,最终总的比较次数: C(n) = (n-1) + (n-2) + + 1 = n(n-1)/2 最坏的情况下,快速排序的时间复杂度为O(n^2)

基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速

相关文档

快速排序最坏情况多少轮
快速排序比较次数
快速排序最坏比较次数
快速排序最坏情况
快速排序最坏需要几轮
快速排序最好情况
各种排序最坏比较次数
希尔排序法最坏情况
jingxinwu.net
zxwg.net
ncry.net
clwn.net
bestwu.net
电脑版