`

alogrithm notes

 
阅读更多

2.数组 

 

线性查找    O(N)   N/2

二分查找    O(log(N))

 

3.排序 

 

冒泡排序     O(N*N) 

每次遍历比较临近的2个选出最大的一个放到右边,这样最大的一个会到最右

第2次只要遍历到第N-1个

遍历N-1次

 

 

选择排序       O(N*N) 

每次遍历选出最小的一个放到左边

比冒泡的好处是每次遍历只进行一次交换

 

插入排序    O(N*N) 

给出一个选定位  

他左边是有序的  

把该选定位和左边有序的依次比较  

插入其中合适的位置  

 

 

4. 栈 队列

 

数组是数据存储结构  

栈 队列作为辅助工具  受限访问

 

栈只能访问最后插入的数据项   先入后出

出入栈  O(1)

 

队列       FIFO 先入先出     O(1)

 

优先级队列  数据项按关键字有序  关键字最小的数据在队头

           在多任务系统中进程的优先执行时采用此数据结构

 

 

算术运算 后缀表达式 

  转换   

    遍历中缀表达式 

      遇到操作符就操作栈

      假如栈顶的操作符不比当前操作符优先级低,就推出栈顶的,遍历直到栈为空或推出一个,压入当前的

                      否则 压入当前的

                      (核心思想就是当前的操作符能不能出栈(意味着可以写在后缀表达式上)要看下一个操作符是什么,下一个不比自己高才能出栈加在后缀表达式上, 所以栈的结构也一定是栈底的操作符优先级底,栈顶高)

  计算

  遍历完表达式

    遇到数字就压栈

    遇到操作符就从栈里弹出2个数,计算出结果,把结果压栈

    遍历完表达式,栈里最后的那个数就是结果

 

 

链表  

  单链表  双端链表  有序链表   双向链表   有迭代器的链表

 

 

  单链表

    在链表头插入

    在链表头删除

    遍历

    没有持有对链表尾部的引用

 

  双端链表

    持有对链表尾部的引用

 

  链表的效率

    在表头插入 删除 很快  O(1)

    查找 删除 插入   O(N)

 

  什么时候使用链表或数组来实现栈和列队呢? 取决于能否预计数据量, 不清楚的话,链表就比数组有更好的适应性

 

  有序链表

    插入 删除 O(N)

    找到或删除最小值  O(1)

    频繁的存取最小项 不需快速插入 可以考虑有序链表

 

  双向链表

    可以向前 也可以向后 遍历

 

希尔排序  O(N(logN)*(logN))

 

快速排序   O(N(logN))

 

二叉树

  二叉搜索树

    左子节点小于父节点  右子节点>=父节点

 

  非平衡树

    大部分节点在树的一边

 

树查找 O(logN)

 

树的遍历  

   1

  2  3

  中序  213

  前序  123

  后序  231

 

哈希表

  插入 删除    O(1)

  缺点  

    基于数组 大小扩展时很费时

    没法简便的有序遍历

  如果不需 有序遍历,  能提前预测数据大小,哈希表有优势

 

  特点 

    把关键字转换为数组下标

 

  开放地址

 

 

  链表

 

0
0
分享到:
评论

相关推荐

    W-K_Alogrithm.zip

    在“W-K_Alogrithm”这个压缩包中,很可能包含了实现W-K算法的MATLAB代码,这是一种基于距离徙动原理的SAR图像处理方法。W-K算法可能是Wideline-Karhunen-Loève(Wideline-KL)算法的变体,它结合了宽脉冲响应和...

    Knuth Morris Pratt alogrithm -- file input

    It needs file input, and test two different ways to use KMP alogrithm.

    C-language-alogrithm.rar_visual c

    "C-language-alogrithm.rar_visual c" 是一个针对C语言算法学习的资源包,特别适合初学者。这个压缩包包含了一个名为 "C language alogrithm.txt" 的文本文件,该文件很可能详细介绍了多种基础算法,并提供了相应的...

    Genetic-Alogrithm.rar_GPS载波相位_Genetic-Alogrithm_模糊_载波相位解算_遗传算法相位

    遗传算法解算GPS载波相位整周模糊度,包括基本遗传算法和自适应遗传算法。

    pso alogrithm 2019.pdf

    粒子群优化算法(PSO,Particle Swarm Optimization)是一种模拟自然界群体智能行为的全局优化算法,由Kennedy和Eberhart于1995年提出。该算法受到鸟群捕食行为的启发,通过群体中的每个粒子(即解决方案的候选解)...

    蚁群算法 Ant_clony_of_alogrithm

    在Ant_clony_of_alogrithm的压缩包文件中,可能包含以下内容: 1. 实现蚁群算法的源代码,可能用Python、C++或其他编程语言编写,用于求解GPS载波相位整周模糊度。 2. 数据集:可能包含实际的GPS观测数据,用于测试...

    Alogrithm_Datastruct

    "Alogrithm_Datastruct"项目,结合了C++这一强大的编程语言,旨在深入探讨和实践这两种概念。C++作为一门面向对象的语言,不仅提供了丰富的库支持,还能进行底层操作,因此它是学习和实现算法与数据结构的理想选择。...

    A-Search-Alogrithm:通过UI界面进行A *搜索Alogrithm降级

    通过UI界面进行A *搜索Alogrithm降级 (0)环境 Win10 X64 代码块 opencv(只需几步即可使用opencv配置CodeBlocks,下面是 ) (1)游戏规则 从右下角块移动到左上角块,尝试找到最小的台阶路径,然后允许您一步步...

    算法的练习:基础的排序算法(选择排序,插入排序等及其性能优化)、高级排序算法(归并排序,(二路三路_Alogrithm.zip

    算法的练习:基础的排序算法(选择排序,插入排序等及其性能优化)、高级排序算法(归并排序,(二路三路_Alogrithm

    Alogrithm-xCode

    "Alogrithm-xCode"项目正是以此为背景,旨在通过xCode这一流行的iOS和Mac开发环境,记录并实践算法学习的过程。本文将深入探讨这个项目中的关键知识点,并介绍如何利用C++在xCode中实现和调试算法。 一、算法基础 ...

    alogrithm_structure_cpp

    "alogrithm_structure_cpp"这个主题聚焦于C++中的算法和数据结构,这是任何程序员都应该精通的基础知识。 算法是解决问题或执行任务的精确步骤序列,而数据结构则是存储和组织数据的方式。C++提供了丰富的库来支持...

    c代码-secutity access alogrithm

    "c代码-secutity access alogrithm"这个项目可能涉及到如何在C语言环境下设计和实现一套安全访问机制。下面将详细讨论与这个主题相关的一些核心知识点。 首先,我们要理解访问控制的基本概念。访问控制是信息安全的...

    C语言最新编程技巧200例

    C语言是一种广泛应用于系统开发、嵌入式编程、软件工程等多个领域的高级编程语言。它以其高效、灵活性和可移植性而备受程序员喜爱。"C语言最新编程技巧200例"这本书显然旨在帮助读者深入理解和掌握C语言的各种高级...

    c代码-secutity access alogrithm1

    标题 "c代码-secutity access alogrithm1" 暗示这是一个关于C语言实现的安全访问算法的项目。这个项目可能涉及到权限控制、访问控制列表(ACL)、身份验证或授权等安全领域的核心概念。下面将详细介绍这些知识点。 ...

    alogrithm:算法练习

    在IT领域,算法是计算机科学的核心,它是一系列解决问题或执行任务的明确指令。这个名为"algorithm:算法练习"的专题显然关注的是通过实践来提升编程中的算法技能,特别是使用JavaScript语言。JavaScript是一种广泛...

Global site tag (gtag.js) - Google Analytics