zoukankan      html  css  js  c++  java
  • 冒泡排序、选择排序、插入排序、二分法排序、快速排序、二叉树排序、堆排序总结



    冒泡排序:
    思路:
    1)比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个
    2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。
    3)针对所有的元素重复以上的步骤,除了最后一个
    时间复杂度为(O(n^2))
    选择排序:
    思路:
    1)在未排序序列中找到最小(大)元素,存放到排序序列的起始位置(末尾位置),
    2)再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
    3)以此类推,直到所有元素均排序完毕。
    时间复杂度为((O(n^2)))
    插入排序:
    思路:
    1)通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
    2)插入排序在从后向前扫描的过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间
    时间复杂度为(O(n^2))


    二分法排序:
    思路:
    1)在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,
    如果小,则对前半再进行折半,否则对后半进行折半,直到left<right,
    然后再把第i个元素前1位与目标位置之间的所有元素后移,再把第i个元素放在目标位置上。

    快速排序
    思路:
    1)将序列中取一个值,然后大于这个值放在后面的序列,小于这个值的放在前面序列
    2)从前到中间,从后到中间按照1)的方法以此类推
    时间复杂度为(n * log n)最坏情况为

    二叉树:
    (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
    (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
    (3)左、右子树也分别为二叉排序树;
    (4)没有键值相等的结点。
  • 相关阅读:
    【存货管理】存货的计价方法
    【NHibernate】列“ReservedWord”不属于表 ReservedWords
    【MySQL】MySQL中where条件的执行分析
    brew卸载&重新安装
    mac nvm安装&使用&一些问题解决方案
    python初始环境配置
    股票数据api整理
    输入一个url到页面渲染完毕过程
    自己简单封装一个promise
    节流&防抖
  • 原文地址:https://www.cnblogs.com/fuyouqiang/p/11844561.html
Copyright © 2011-2022 走看看