算法和数据操作
2016-05-21 15:05
288 查看
掌握常用的二分查找、快速排序、归并排序。
查找:顺序查找、二分查找、哈希表查找、二叉排序树查找。
位运算可以看成是一类特殊的算法,它是把数字表示成二进制之后对0和1的操作,共有与、或、异或、左移和右移5种运算。
哈希表最主要的优点是能够在O(1)时间来查找某一元素,是效率最高的查找方式。缺点是需要额外的空间来实现哈希表。
排序:冒泡排序、插入排序、选择排序、快速排序、归并排序,从额外空间的消耗、 平均时间复杂度、 最差时间复杂度来比较它们的优缺点。
如果要求在排序的数组(或者部分排序的数组)中查找一个数字或者统计某个数字出现的次数,可以尝试使用二分查找算法。
快速排序总体的平均效率是最好的。
考虑排序的应用环境、约束条件。
希尔排序相当于直接插入排序的升级,它们同属于插入排序类,堆排序相当于简单选择排序的升级,它们同属于选择排序类。而快速排序其实就是我们前面认为最慢的冒泡排序的升级,它们都属于交换排序类。即它也是通过不断的比较和移动交换来实现排序的,只不过它的实现,增大了记录的比较和移动的距离,将关键字较大的记录从前面直接移动到后面,关键字较小的记录从后面直接移动到前面,从而减少了总的比较次数和移动交换次数。《大话数据结构》
待续
查找:顺序查找、二分查找、哈希表查找、二叉排序树查找。
位运算可以看成是一类特殊的算法,它是把数字表示成二进制之后对0和1的操作,共有与、或、异或、左移和右移5种运算。
哈希表最主要的优点是能够在O(1)时间来查找某一元素,是效率最高的查找方式。缺点是需要额外的空间来实现哈希表。
排序:冒泡排序、插入排序、选择排序、快速排序、归并排序,从额外空间的消耗、 平均时间复杂度、 最差时间复杂度来比较它们的优缺点。
如果要求在排序的数组(或者部分排序的数组)中查找一个数字或者统计某个数字出现的次数,可以尝试使用二分查找算法。
快速排序总体的平均效率是最好的。
考虑排序的应用环境、约束条件。
希尔排序相当于直接插入排序的升级,它们同属于插入排序类,堆排序相当于简单选择排序的升级,它们同属于选择排序类。而快速排序其实就是我们前面认为最慢的冒泡排序的升级,它们都属于交换排序类。即它也是通过不断的比较和移动交换来实现排序的,只不过它的实现,增大了记录的比较和移动的距离,将关键字较大的记录从前面直接移动到后面,关键字较小的记录从后面直接移动到前面,从而减少了总的比较次数和移动交换次数。《大话数据结构》
待续
相关文章推荐
- 【BZOJ-1912】patrol巡逻 树的直径 + DFS(树形DP)
- java中采用dom4j解析xml文件
- [LeetCode] Intersection of Two Arrays II
- 使用终端模拟器通过wifi连接eclipse
- 76-Search in Rotated Sorted Array
- https://segmentfault.com/a/1190000002620961
- C语言到底怎么分配空间
- python3学习记录——安装pyspider中lxml安装问题
- Quartz使用-入门使用
- Android Studio报错:Gradle DSL method not found: 'android()'
- C#—Windows应用基础2
- react native安装笔记
- 计组_补码1位乘
- 工具-VMWARE技巧-桥接连外网-WIN7
- 字符串------打印1到最大的n位数
- 工资税
- iOS - 通过runtime获取某个类中所有的变量和方法
- python实现简单购物商城
- delphi中UTF8Deocde的问题
- 套接字编程--TCP