zoukankan      html  css  js  c++  java
  • 2-算法基础

    排序算法

    常用排序算法的特点

    常用排序法的时间复杂度和空间复杂度

    插入排序(直接插入,希尔排序)

    选择排序(‘简单选择排序,堆排序’)

    交换排序(冒泡排序,快速排序)

    归并排序

    基数排序

    直接插入排序

    首先以第一个数字开始,每次选择,已排序数据中的后面一个数据插入到以排序数据中

    希尔排序

    跳跃性的选择两个数据,并根据大小交换位置,完成后,再减小跳跃性的间隔,直到跳跃性为零。

    选择排序

    首先在元素中查找,最小的那个元素,找到后,放到第一位,然后在剩余序列中,在查找最小的元素,放到第二位。。。直到全部完成

    堆排序  一个完全二叉树

    就是在树中,必须是从上到下,从左到右,依次增大,或减少

    例题:

     

    1.读题我们知道,建立大顶堆就是,上面的是最大的

    2.然后从最后一层的上一层开始由右向左节点开始,也就是56,她和她的子节点,84,84大,所以两者调换位置

    3.再向左一个节点看去,也就是79,我们看到79已经大过她的两个节点了,所以79位置不用动了

    4.这一层结束了,看上面一层,46,46的两个节点中,84大,所以84替换46

    然后重复上面的过程,直到这个堆没法变动为之

    结果就是下面:

    所以他的初始堆就是84  79  56  38  40  46  选择B

    其实,我们需要的不是这个初始堆,而是最终排序,所以下面的步骤是

    将最上面的顶点和最后一个交换,并断开84与56的连接,组成新的堆,

    重复上面的堆步骤,直到全部成功

    冒泡排序:

    首先从最小的元素开始,与前面的元素进行比较,小的那个元素向前移动,则,最前面的是最小的

    然后从倒数第二个元素开始,继续前面的步骤,直到全部元素完成

    快速排序

    1选择一个关键字,然后用全部的元素和这个关键字进行比较,小的放前面,大的放后面

    2出现了两个小的集合,然后在这两个小的集合中,每个再找一个关键字,继续第一步

    直到全部完成

    归并排序

    基数排序(我觉的不会考的)

    1.从每个数的个位开始排序

    2.然后是十位

    3.百位。。。

    排序算法的思考

    什么的排序算法是稳定的

    查找

    顺序查找

    从表的开始,依次与需要查找的字进行对比,

    二分查找

    要求待查找序列为有序数列

    1. 首先把总数据除以2,得到中央的元素
    2. 然后进行对比,大的,从右边的序列开始,小的从左边的序列开始,
    3. 进行第一步

    分块查找

    就是对顺序查找的改进

  • 相关阅读:
    【STM32F429开发板用户手册】第11章 STM32F429移植SEGGER的硬件异常分析
    【STM32F407开发板用户手册】第11章 STM32F407移植SEGGER的硬件异常分析
    【STM32F429开发板用户手册】第10章 STM32F429的FLASH,RAM和栈使用情况(map和htm文件)
    【STM32F407开发板用户手册】第10章 STM32F407的FLASH,RAM和栈使用情况(map和htm文件)
    【STM32F4029开发板用户手册】第9章 STM32F429重要知识点数据类型,变量和堆栈
    手写Mybatis插件
    Mybatis插件原理和整合Spring
    深入分析代理模式
    Mybatis源码(五)
    Mybatis源码(六)
  • 原文地址:https://www.cnblogs.com/tangwanzun/p/5879536.html
Copyright © 2011-2022 走看看