排序与搜索算法
来源:互联网 发布:java ant 安装 编辑:程序博客网 时间:2024/05/22 00:24
排序算法
插入排序:基本思想是将下一输入插入到已排好的序列中。是一种在线算法,其算法复杂度为O(n2)。
希尔排序:一种改进的插入排序算法,将序列按间隔距离d分组,对每组实施插入排序,逐渐减小间隔距离d来分组实施插入排序,最终d=1时,排序完成。是一种离线算法,算法复杂度为O(n2),但是相对于基本插入算法来说,会减少大量数据移动。
冒泡排序:基本思想将序列从头到尾相邻逆序的两个数进行交换,在经历一轮交换后,最大元素会排在序列末,所以经过n轮冒泡后,排序完成。离线算法,其算法复杂度为O(n2)。
选择排序:是一种改进的冒泡排序算法,执行效率应该比冒泡排序优,基本思想选择最大的元素与序列末端元素交换,在经历一轮交换后,最大元素会排在序列末,所以经过n轮选择后,排序完成。离线算法,其算法复杂度为O(n2)。
归并排序:分治思想,将序列分为前后两个部分,分别进行排序后再合并在一起。其算法复杂度为O(nlgn),在并行计算机中,该算法更有优势。
快速排序:随机在序列中选择一个数作为标数,数列根据标数通过交换分成了前后两部分和标数,其中前面部分都比标数小,后面部分都比标数大,中间为标数,然后递归对前后两部分进行快速排序。离线算法,算法复杂度为O(nlgn)。
堆排序:利用最小堆数据结构来进行排序,既可作为在线算法,又可以实现离线算法,堆的基本操作基本为O(lgn),所以排序算法复杂度为O(nlgn)。
基数排序:通过根据键值对r进制各位的权值将键值分配到不同的桶中,实现排序。
拓扑排序:
搜索算法
二分搜索:在有序序列中搜索指定值,比较指定值和序列中间值,若与中间值相等,则命中,若小于中间值,则用二分搜索递归搜前半部分序列,若大于中间值,则用二分搜索递归搜后半部分序列。其算法时间复杂度为O(lgn)。
哈希表:利用hash函数散列指定值,若散列值找得到匹配,则命中,否则不命中。哈希表理想时间复杂度为O(1)。但在hash函数球散列值时可能会存在冲突,如何选择好的hash函数减少冲突成为哈希表算法的关键。
二叉查找树:利用二分查找树数据结构来查找指定值,其算法时间复杂度与二叉树高度有关,为O(h),h为二叉树高度。
- 排序与搜索算法
- 一些搜索与排序算法
- 170612 杂项-搜索与排序算法
- 网页搜索引擎排序算法与未来搜索的方向
- 几句话描述简单算法——排序与搜索
- 排序算法和搜索算法
- 数组 :排序与搜索
- 常见排序及搜索算法
- 排序和搜索算法总结
- 淘宝搜索排序算法分析
- 算法与数据结构 - 搜索算法
- 二分搜索算法和快速排序算法
- 快速排序算法和二分搜索算法
- 搜索与排序(一)
- 搜索与排序(二)
- 搜索广告排序与定价
- 2017.01.09:排序与搜索
- 算法的力量--之bit位运算在排序与搜索中的应用
- win nt 卸载oracle step by step
- Android 5.0发布日期/机型/功能传言汇总
- Velocity使用include和parse引入外部文件
- HTML学习笔记(4)
- 【Flex】Flex4权威指南-读书笔记1(第0章、第1章)
- 排序与搜索算法
- 云计算领域谁“一览众山小”?亚马逊居首
- Chrome浏览器的发展史
- do/while(0)的妙用
- 令人闹心挠心的智商测试题
- Linux 查看和杀死进程
- 中文女和程序员的爱情奇遇
- rqnoj-164
- java 利用Xstream注解生成和解析xml