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)没有键值相等的结点。
  • 相关阅读:
    CefSharp.v49.0.1浏览器控件完全WPF版,实现禁止弹出新窗口,在同一窗口打开链接,并且支持带type="POST" target="_blank"的链接
    C#动态调用WebService
    WPF实现窗体中的悬浮按钮
    Oracle树结构查询按层级排序
    WPF自定义TabControl样式
    WPF自定义Window窗体样式
    C# 实现图片压缩
    C# 图片反色处理 图片夜间模式
    C#中多线程中变量研究
    EasyNetQ操作RabbitMQ(高级消息队列)
  • 原文地址:https://www.cnblogs.com/fuyouqiang/p/11844561.html
Copyright © 2011-2022 走看看