排序算法和树

一、排序算法【快速排序和归并排序是两个很好锻炼递归排序的例子】

1.排序算法的稳定性:

2.冒泡排序【最优时间复杂度o(n)即有序顺序表,最坏时间复杂度o(n^2),冒泡排序,两个对比,相等时,位置不动,后面的接着比较,所以稳定性比较稳定】

3.选择排序【将一个序列分成两部分,左边是有序,右边无序,右边做比较添加到左边,最终成为一个有序的线性表,稳定性:升序排列,且按照往右放,右边有序时,左边的先比较,大则往后放,最大的两个相同】【选择分两步,无序和有序,无序找最小下标,每次无序第一个看作最小下标值】

4.插入排序【插入排序分两步:有序和无序,无序取1,有序比较】

 5.希尔排序【时间复杂度按照,gap=1时,为o(n^2),稳定性:不稳定】

6.快速排序【第一个元素取出,前后各放一个游标,坐标是比第一个元素小的,右边是大的,左右夹击,重合的时候,将第一个元素放到重合的位置】

【快速排序的实现:递归函数,递归本质层层进去,层层出来。第一步按照快速查找的思想走一遍,第二步,考虑到底走多少步】

7.归并排序【整个序列先对半,然后一直往下分,分到每个一个元素,再网上慢慢合并,合并的同时按照从小到大排列,代码实现:合并时,两组需要两个指针,然后进行值对比】 

if条件添加“=”则为稳定排序,只有归并排序是会产生新的对象,其他都是在原有序列上操作

 

 【一般用快排,不保序则用,保序则不可用】

二、搜索

1.二分查找【只能作用到有序的顺序表,链表不可以】又称折半查找,最优时间复杂度O(1),最坏时间复杂度O(logn)

非递归时使用:头尾下标之和除以2

三、树和二叉树

1.树的概念

2. 

3.树的种类【二叉树:最多两个子树,完全二叉树除最后一层,都是满的,二叉排序树类似二分查找,左边的都比右边小】

   

 

4.树的应用

 5.二叉树的性质

 六、树是对链表的扩充

1.二叉树的广度优先遍历【按照队列的方式分析,左边取,右边添加】

 2.广度遍历,指的是横向的

3.深度遍历的三种方式:先序(根节点放第一)、中序(根节点放中间)、后序(根节点放最后),无论哪种方式,都是从左到右

5.由遍历确定一棵树,必须有中序,有先序和中序或者中序和后序都可以确定一棵树 

后序中,最后一个就是根,不论整个的最后一个还是,中间根分开的最后一个

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值