qsort()函数原理

  qsort()是glib中的排序函数,本文分析其基本流程。qsort()的判断流程如下:

  • 优先使用归并排序来排序输入数据。归并排序的空间复杂度为O(n),当数据量不算大的时候,可以负担的其额外的O(n)空间来实现更快的排序速度
  • 当数据量较大的时候,改用快速排序算法实现
    • 快速排序的分区点选取采用三数取中法:从区间的首、尾、中间,分别取出一个数,然后对比大小,取这 3 个数的中间值作为分区点。
    • 当排序区间元素值小于等于4时,退化为插入排序而非继续递归做快速排序。插入排序在n较小的时候,O(n^2)的表现甚至好于O(nlogn),因为实际上快速排序的复杂度计算为knlogn + c,比起插入排序会性能更差。
发布了129 篇原创文章 · 获赞 15 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/u013354486/article/details/105312744
今日推荐