Java常用的八种排序算法与代码实现精解
来源:互联网 发布:矩阵潜袭 规则 编辑:程序博客网 时间:2024/06/08 15:00
1.直接插入排序
直接插入排序算法是排序算法中最简单的,但在寻找插入位置时的效率不高。基本思想就是将一个待排序的数字在已经排序的序列中寻找找到一个插入位置进行插入。直接插入排序的算法重点在于寻找插入位置。
例:
原有序表:(9 15 23 28 37) 20
找插入位置 : (9 15 ^ 23 28 37) 20
新有序表: (9 15 20 23 28 37)
2.希尔排序
希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。由于多次插入排序,我们知道一次插入排序是稳定的,不会改变相同元素的相对顺序,但在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动,最后其稳定性就会被打乱,所以shell排序是不稳定的。
3.简单选择排序
常用于取序列中最大最小的几个数时。
(如果每次比较都交换,那么就是交换排序;如果每次比较完一个循环再交换,就是简单选择排序。)
遍历整个序列,将最小的数放在最前面。
遍历剩下的序列,将最小的数放在最前面。
重复第二步,直到只剩下一个数。
4.堆排序
对简单选择排序的优化。
将序列构建成大顶堆。
将根节点与最后一个节点交换,然后断开最后一个节点。
重复第一、二步,直到所有节点断开。
5.冒泡排序
一般不用。
将序列中所有元素两两比较,将最大的放在最后面。
将剩余序列中所有元素两两比较,将最大的放在最后面。
重复第二步,直到只剩下一个数。
6.快速排序
要求时间最快时。
选择第一个数为p,小于p的数放在左边,大于p的数放在右边。
递归的将p左边和右边的数都按照第一步进行,直到不能递归。
7.归并排序
速度仅次于快排,内存少的时候使用,可以进行并行计算的时候使用。
选择相邻两个数组成一个有序序列。
选择相邻的两个有序序列组成一个有序序列。
重复第二步,直到全部组成一个有序序列。
8.基数排序
用于大量数,很长的数进行排序时。
将所有的数的个位数取出,按照个位数进行排序,构成一个序列。
将新构成的所有的数的十位数取出,按照十位数进行排序,构成一个序列。
- 常用的八种排序算法与Java代码实现
- Java常用的八种排序算法与代码实现
- 常用的八种排序算法与Java代码实现
- Java常用的八种排序算法与代码实现
- [Java]常用的八种排序算法与代码实现
- Java常用的八种排序算法与代码实现
- Java常用的八种排序算法与代码实现
- Java常用的八种排序算法与代码实现
- Java常用的八种排序算法与代码实现
- Java常用的八种排序算法与代码实现
- Java 常用的八种排序算法与代码实现
- Java常用的八种排序算法与代码实现
- Java常用的八种排序算法与代码实现
- Java常用的八种排序算法与代码实现
- Java常用的八种排序算法与代码实现精解
- Java常用的八种排序算法与代码实现精解
- 一遍记住Java常用的八种排序算法与代码实现
- 一遍记住Java常用的八种排序算法与代码实现
- all-in-one的openshift 创建管理员
- Sublime Text 3 快捷键大全
- 集群/分布式环境下5种session处理策略
- c++实验4-输出星号图
- GeneraterMybatis所生成model查询的serviceimpl应用
- Java常用的八种排序算法与代码实现精解
- 【IMWeb训练营作业】基于vue的todolist练习
- Ubuntu14.04 下apt-get安装Code::Blocks
- BZOJ4166: 月宫的符卡序列 manacher
- Mysql MHA搭建以及故障切换测试
- 185矩阵的之字形遍历
- 前端HTML学习笔记2017-04-16
- ZigBee读取IEEE地址
- 勇敢的迈出第一步!