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.百位。。。
排序算法的思考
什么的排序算法是稳定的
查找
顺序查找
从表的开始,依次与需要查找的字进行对比,
二分查找
要求待查找序列为有序数列
- 首先把总数据除以2,得到中央的元素
- 然后进行对比,大的,从右边的序列开始,小的从左边的序列开始,
- 进行第一步
分块查找
就是对顺序查找的改进