摘要: 堆排序 注意,堆这个结构需要知道什么是满二叉树、完全二叉树。堆就是完全二叉树。 堆 使用数组存储数据,用数组模拟二叉堆结构,此时下标的关系有: 父结点 i 的左子结点为 2i + 1,右子结点为 2i + 2 子结点 i 找父结点公式为:(i 1) / 2 堆分大根堆和小根堆,每一个结点为子树的最大 阅读全文
posted @ 2019-11-19 21:52 学习趁早 阅读(517) 评论(0) 推荐(0) 编辑
摘要: 经典快排 经典快排的思路是选取数组的最后一个数 x,按照 "问题一" 的思路把整个数组划分成 两个部分,将 x 和 大于 x 部分数组的第一个元素交换位置。此时整个数组划分成 三个部分,也就是这一次排序将 x 值排好位置。 再分别对 和 中的数组递归划分,直到划分成一个数,此时所有元素也完成排序。 阅读全文
posted @ 2019-11-19 12:22 学习趁早 阅读(1113) 评论(0) 推荐(0) 编辑
摘要: 问题一 给定一个数组 arr,和一个数 num,请把小于等于 num 的数放在数组的左边,大于 num 的数放在数组的右边。 要求额外空间复杂度O(1),时间复杂度O(N)。 思路:遇到 arr[i] 小于等于 number 的数,交换 index + 1 和 arr[i],此时 index + 1 阅读全文
posted @ 2019-11-19 10:04 学习趁早 阅读(397) 评论(1) 推荐(0) 编辑