• 冒泡排序、选择排序、插入排序、二分法排序、快速排序、二叉树排序、堆排序总结




    冒泡排序:
    思路:
    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)没有键值相等的结点。
  • 相关阅读:
    java 流重定向
    Linux下用鼠标滚轮
    AutoPager的简单实现
    App Store Review Guidelines ——苹果大慈大悲啊
    利用CSS3特性巧妙实现漂亮的DIV箭头
    Have you read it before?
    Windows Phone 7上的GPS应用编程详解。
    说一下Path类
    远程截取屏幕内容
    争论VB.NET与C#哪个好?——智商低下的举动
  • 原文地址:https://www.cnblogs.com/fuyouqiang/p/11844561.html
Copyright © 2020-2023  润新知