1、插入排序
2、冒泡排序
3、快排
4、二分归并排序
5、货郎问题&01背包&双机调度
6、基本运算和时间复杂度
7、享元模式
1、插入排序
2 3 4 8 1 5
以1为例,1和8比较,1比8小,继续往前找。直到找到比1小的,然后插入1到该数后面。
2、冒泡排序
3 2 8 4 1 5
以3为例,3 2比较 ,3大, 3 2交换。3 8比较 8大,3 8 不交换,但接下来用8进行比较。
3、快排
5 8 1 9 0 4 3 2
从第二个数开始找比首元素大的,从后面开始找比首元素小的,找到后交换两个数。然后从找到数的两个位置继续找,找到就交换,直到游标相遇。
然后比首元素小的数和首元素交换,以首元素为分割,前面比它小,后面比它大。
递归。
4、二分归并排序

5、货郎问题&01背包&双机调度
这些问题到目前未知尚未找到多项式复杂度的计算时间。
6、基本运算和时间复杂度


7、享元模式
1. 何时使用
系统中有大量对象时
这些对象消耗大量内存时
这些对象的状态大部分可以外部化时
2. 方法
用唯一标识码判断,如果在内存中有,则返回这个唯一标识码所标识的对象,用HashMap/HashTable存储
3. 优点
大大减少了对象的创建,降低了程序内存的占用,提高效率
4. 缺点
提高了系统的复杂度。需要分离出内部状态和外部状态,而外部状态具有固化特性,不应该随着内部状态的改变而改变
5. 使用场景
系统中存在大量相似对象
需要缓冲池的场景
6. 应用实例
String常量池
数据库连接池
7. 注意事项
注意划分内部状态和外部状态,否则可能会引起线程安全问题
这些类必须有一个工厂类加以控制
网友评论