2020-12-21

作者: 预眸丶 | 来源:发表于2020-12-21 23:21 被阅读0次

    快速排序:

    快速排序使用,分治法+双指针的思想,一般设置基准值为第一个数,通过搜寻左边大于基准值的数与右边小于基准值的数进行交换。

    快速排序的平均时间复杂度为O(nlogn),为改进的快排最坏复杂度为O(N^2) ,即退化为冒泡排序。改进使用三个指针,选取最中间的值作为基准值,可以保证快排还原为O(nlogn)

    堆排序:

    当要求升序排列时,构建大顶堆。每次获得堆顶元素,与未排序数组的最后一位进行交换,再再一次调整大顶堆。

    调整:找到第一个非叶结点,将其值存储到tmp中,查看是否小于孩子结点,如果是,则孩子结点的值赋给它,同时parent结点变为child结点,如果child结点index大于数组长度,则退出。同时将tmp赋值到当前结点。

    基数排序:

    由最低权重基数开始排,分发类型而不是排序,然后下一次分发由这一次获得的链表重组起来,再一次分发。直到到达最大权重的基数。

    相关文章

      网友评论

        本文标题:2020-12-21

        本文链接:https://www.haomeiwen.com/subject/lnxjnktx.html