码迷,mamicode.com
首页 > 编程语言 > 详细

2-算法基础

时间:2016-09-17 20:33:32      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

排序算法

常用排序算法的特点

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

 

 

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

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

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

归并排序

基数排序

 

 

直接插入排序

技术分享

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

希尔排序

技术分享

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

选择排序

技术分享

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

堆排序  一个完全二叉树

技术分享

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

例题:

技术分享 

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. 进行第一步

分块查找

就是对顺序查找的改进

技术分享

 

2-算法基础

标签:

原文地址:http://www.cnblogs.com/tangwanzun/p/5879536.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!