数据结构和算法
临四七巷朝小树
好记性不如烂笔头,也参考大神的文章,只为了让自己每天都进步一点点!
展开
-
二叉树
树这种数据结构,和数组、链表不一样,是一种非线性结构今天来了解下二叉树A是B的父节点, B是A子节点 , D是B的兄弟节点 C,D是叶子节点 ,A是根节点二叉树是除了叶子节点,其余每个节点仅且只有两个子节点满二叉树: 叶子节点全在最底层, 除了叶子节点之外, 每个节点都有左右两个子节点完全二叉树: 叶子节点都在最底下两层, 最后一层的叶子节点都靠左排列,除了最后一层,其他层的节点个数...翻译 2019-11-27 14:00:33 · 212 阅读 · 0 评论 -
25匹马赛跑,有一个赛场,只有五个赛道,没有计时器,只能通过目测来记录快慢,求出第三3快的马要多少场比赛?
25匹马赛跑,有一个赛场,只有五个赛道,没有计时器,只能通过目测来记录快慢,求出第三3快的马要多少场比赛?思路:我们分5组:A组: A1 A2 A3 A4 A5B组: B1 B2 B3 B4 B5C组: C1 C2 C3 C4 C5D组: D1 D2 D3 D4 D5E组: E1 E2 E3 E4 ...原创 2019-08-27 23:26:51 · 4365 阅读 · 6 评论 -
算法学习题目:已知 sqrt (2)约等于 1.414,要求不用数学库,求 sqrt (2)精确到小数点后 10 位
2019年阿里面试题中的一道题目:已知 sqrt (2)约等于 1.414,要求不用数学库,求 sqrt (2)精确到小数点后 10 位。* 考察点基础算法的灵活应用能力(二分法学过数据结构的同学都知道,但不一定往这个方向考虑;如果学过数值计算的同学,应该还要能想到牛顿迭代法并解释清楚) 退出条件设计* 解决办法1. 已知 sqrt(2)约等于 1.414,那么就可以在(1.4, ...原创 2019-08-22 12:00:09 · 1064 阅读 · 0 评论 -
算法-插入排序
- (void)logInsertionSortingArray { NSMutableArray * arr = @[@(16),@(1),@(2),@(9),@(7),@(12),@(5),@(3),@(8),@(13),@(10)].mutableCopy; for (int i = 1; i < arr.count; i++) { int j = i...原创 2019-08-19 00:27:08 · 110 阅读 · 0 评论 -
算法-选择排序
选择排序就是每一轮选出最小者交换到左侧的思路,或者选出最大这交换到最右侧的思路这种排序的最大优势就是省去多余的元素交换OC代码:- (NSArray *)selectSort:(NSArray *)sort{ NSMutableArray *array = [NSMutableArray arrayWithArray:sort]; for (int i =0; i &l...原创 2019-08-18 20:17:50 · 118 阅读 · 0 评论 -
算法-动态规划-走台阶问题
有一道经典题目:有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶,要求程序求出一共多少中走法.第一种方法:暴力的利用排列组合,写一个多层嵌套循环遍历出所有的可能性,但是时间复杂度是指数级的.这里就用到了动态规划,当然也有递归的思想,我们假设你只差一步就到第10级台阶,会出现什么情况?只会出现两种情况,一种是从9级走到10级,一种是8级走到10级利用递归的思想,10...原创 2019-07-28 19:44:11 · 710 阅读 · 0 评论 -
跳跃表是什么
加入我们要开发一个游戏里面类似拍卖行的搜索功能,我们要支持输入道具名称的精准查询和不输入名称的全量查询.拍卖行商品数量几十万件,对应数据库商品表的几十万条记录,按照商品名称精准查询好办,可以直接冲数据库查出来,如果没有商品名称的全量查询怎么办?总不能把数据库所有记录查出来,还要支持不同字段的排序.拍卖行商品列表是线性的,最容易表达线性结构的是数组和链表,但是数组使用二分查找可以最快定位,时间...原创 2019-07-28 12:39:44 · 241 阅读 · 0 评论 -
数据结构-单链表
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.以结点来表示,每个结点是由元素 + 指针组成.以结点的序列表示线性表称作线性链表(单链表),单链表是链式存取的结构.单链表设头指针head指向开始结点/** 创建一个单链表 */typedef struct _Sample_List{ int Data; struct _Sample...原创 2019-08-01 17:54:55 · 181 阅读 · 0 评论 -
算法逻辑题-海盗分金币问题
有5个海盗,获得了100枚金币,他们约定一个分配方案.商议方式:1.有5个海盗轮流提出分配方案 2.如果超出半数海盗(包括提出者)同意该方案,则按照该方案分配 3.如果同意该方案的人数(包括提出者)小于等于半数,则提出者要被扔到海里喂鱼,剩余海盗继续商议分配 4.海盗们是绝对理性的,以自己尽可能获得金...原创 2019-07-26 12:39:48 · 9975 阅读 · 0 评论 -
什么是红黑树
红黑树是一种自平衡二叉查找树,是一种数据结构.二叉查找树的特性:1.左子树上所有结点的值小于或等于它的根节点的值.2.右子树上所有结点的值均大于或等于它的根节点的值.3.左右子树也分别为二叉排序树.二叉查找很方便,查找所需的最大次数等同于二叉查找树的高度.二叉查找树多次插入新节点而导致的不平衡呢?这个时候用到了红黑树,它的特点:1.节点是红色或黑色2.根节点是黑色3.每个叶子节...原创 2019-07-30 23:48:07 · 195 阅读 · 0 评论 -
算法-冒泡排序优化版
冒泡排序是一种最基本的交换排序,把相邻的元素两两比较,根据大小来交换元素的位置.原始的冒泡排序是稳定排序,需要遍历所有元素,时间复杂度是O(N^2)我用OC来写这个算法,分别写了三个,后两个是在基础上进行优化的,以最后一个优化的为准./** 这是冒泡排序第一版 @param list NSArray *date = @[@"5",@"8",@"6",@"3",@"9",@"2"...原创 2019-07-30 00:19:45 · 146 阅读 · 0 评论 -
数据结构和算法总结(一)
复习有关数据结构的基础知识,参考百度百科数据结构是计算机存储,组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.精心选择的数据结构能带提高更高的运行或存储效率.数据结构是指同一数据元素类中各数据元素之间存在的关系.分为: 逻辑结构/ 存储结构(物理结构)/数据的运算数据的逻辑结构: 反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,...翻译 2019-01-10 20:06:11 · 303 阅读 · 0 评论