收藏本站 设为首页

为什么自己写的qsort比不上C语言库里自带的qsort效率高

编辑:admin 日期:2019-09-04 14:14 分类:香塪白小姐免费资料 点击:
简介:②如果某次递归时,排序的数目过小,则进行冒泡排序(据说冒泡排序比插入排序快),这么做是为了减小快排在待排序数目较小时的冗杂运算。 ③否则进行快速排序。 请律师来应诉我还要另交律师费吗 ,快速排序我不知你手打是怎么样的,取比较的数时,是取第1个

  ②如果某次递归时,排序的数目过小,则进行冒泡排序(据说冒泡排序比插入排序快),这么做是为了减小快排在待排序数目较小时的冗杂运算。

  ③否则进行快速排序。请律师来应诉我还要另交律师费吗,快速排序我不知你手打是怎么样的,取比较的数时,是取第1个数、还是取中间的数、还是取随机一个数。但是这么做都不能保证时间复杂度(虽然可能不会太慢,好日子心水论坛高手榜,但是他们可能不是log的了,如果取确定位数来排序的话,是可以出数据卡成O(n^2)的)。1+1+1 1 ×0=?。所以,要取中位数,就可以保证,均分后左右两边数目对等了。那么先O(n)找出中位数,然后再递归下去。至于怎么O(n)找中位数,就跟快排思路类似,但每次只递归一侧,这样保证了复杂度不到O(2n)。C++中有一个nth_element函数可以做到O(n)把中位数放到中间,(不过那个做法比较强,过程较复杂,大概一般情况下比我上面说的这种还要快)。