上一页 1 ··· 24 25 26 27 28 29 30 31 32 ··· 34 下一页
摘要: ​二分查找: 前提条件: 基本思想 时间复杂度: 顾名思义: 劈半查找, 每次只寻找当前序列的一半, 总会被劈成一个个长度为一的小序列, 此过程需要n步 即: 时间复杂度 --> O(log2^n) --> (是以2为底,n的对数)--> O(logn) 精简版: def bin_search(da 阅读全文
posted @ 2018-05-18 22:34 阿谋 阅读(318) 评论(0) 推荐(0)
摘要: 一、堆排序概述 当你看到这里请去原作者那里点个赞, 原文链接 1.堆是一种数据结构 可以将堆看作一棵完全二叉树,这棵二叉树满足,任何一个非叶节点的值都不大于(或不小于)其左右孩子节点的值。 2. 堆的存储 一般用数组来表示堆,若根节点存在于序号0处,i结点的父结点下表就为(i-1)/2,i结点的左右 阅读全文
posted @ 2018-05-18 17:10 阿谋 阅读(2984) 评论(0) 推荐(0)
摘要: 快速排序 个人思绪很混乱, 建议直接看原文 简洁版: def PARTITION(A, p, r): x = A[r] # 锚点 主元{大于它放一边,小于的放另一边} i = p - 1 for j in range(p, r): if A[j] <= x: i += 1 A[i], A[j] = 阅读全文
posted @ 2018-05-17 23:09 阿谋 阅读(194) 评论(0) 推荐(0)
摘要: 原版文章: 题解: 寻找未排序数组的中位数,简单粗暴的方法是先排序后输出中位数索引处的数,但是基于比较的排序算法的时间复杂度为 O(nlogn)O(n \log n)O(nlogn), 不符合题目要求。线性时间复杂度的排序算法常见有计数排序、桶排序和基数排序,这三种排序方法的空间复杂度均较高,且依赖 阅读全文
posted @ 2018-05-17 22:38 阿谋 阅读(757) 评论(0) 推荐(0)
摘要: 归并排序 描述: 归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。 合并: 将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过 阅读全文
posted @ 2018-05-16 14:43 阿谋 阅读(212) 评论(0) 推荐(0)
上一页 1 ··· 24 25 26 27 28 29 30 31 32 ··· 34 下一页