前言:
最近课程比较松,自学Android也有一段时间了,感觉自己可以做出来一些小东西了,但是心里还是挺虚的,因为对数据结构和算法这一块一直没有深入研究。也因为学校今年才有ACM,再参加有点晚了,所以想抽出一段时间补一下算法。
正文:
那么就从排序说起吧。
不知道为什么,有时候对算法有一种敬畏感,思考起来又特别享受,有一个问题一直伴随着我,那就是自己想一个O(n)复杂度的排序算法,大二的一天中午,在北校区的操场上,突然灵感迸发,想到了一种运用数组计数的方式,那种激动的心情无法用语言描述。后来才知道这种方法叫计数排序。。。还有些小失望0.0.
好了,废话有点多。。。
那么我们常见的排序有哪些呢?
1.快速排序(JDK)
2.堆排序(TOP K问题)
3.归并排序(一些特定问题可能会用到这种思想,不一定排序)
4.插入冒泡选择
最近对这些算法做了一些自己的实现,巩固自己的代码能力,并希望对大家有所帮助。
代码:
package 所有排序的实现;
import java.util.Arrays;
public class 常见排序 {
public static void main(String[] args) {
Syst