2-算法基础

排序算法

常用排序算法的特点

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

 

 

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

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

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

归并排序

基数排序

 

 

直接插入排序

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

希尔排序

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

选择排序

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

堆排序  一个完全二叉树

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

例题:

 

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

分块查找

就是对顺序查找的改进

 

posted @ 2016-09-17 20:08  兔子只吃胡萝卜  阅读(339)  评论(0编辑  收藏  举报