模式定义简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。提供一个创建对象实例的功能,而无需关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体类。 解决的问题将“类实例化的操作”与“使 ...
Java多线程-06之-线程让步
yield()介绍 yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行! yield ...
排序算法 - 梳排序
基本思想梳排序和希尔排序很类似。希尔排序是在直接插入排序的基础上做的优化,而梳排序是在冒泡排序的基础上做的优化。也是像希尔排序一样,将待排序序列通过增量分为若干个子序列,然后对子序列进行一趟冒泡排序,一步步减小增量,直至增量为1。所以梳排序的最后一次排序是冒泡排序。梳排序增量是根据递减率减小的,递减 ...
排序算法 - 地精排序
基本思想号称最简单的排序算法,只有一层循环,默认情况下前进冒泡,一旦遇到冒泡的情况发生就往回冒,直到把这个数字放好为止。 举个例子:待排数组[6 2 4 1 5 9]。 先设计一个标识i=0然后从头开始判断,什么时候(i < 6)不成立,什么时候排序结束。 [6 2 4 1 5 9] [0 1 ...
排序算法 - 鸡尾酒排序
基本思想鸡尾酒排序基于冒泡排序,双向循环。 举个例子:给定待排数组[2 3 4 5 1] 第一趟过去时的每一步。 第一步迭代,2 < 3不换 [2 3 4 5 1] 第二步迭代,3 < 4不换 [2 3 4 5 1] 第三步迭代,4 < 5不换 [2 3 4 5 1] 第四步迭代, ...
排序算法 - 桶排序
基本思想是将阵列分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。简 ...
Java多线程-05之-线程等待与唤醒
wait(), notify(), notifyAll()等方法介绍在Object.java中,定义了wait(), notify()和notifyAll()等接口。wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。而notify()和notifyAll( ...
排序算法 - 耐心排序
基本思想耐心排序充分集合了桶排序和插入排序的优点,首先使用桶排序,排序之后每个桶中数据相对有序,这样再使用插入排序,简化了问题,速度变的更快。 建桶规则:如果没有桶,新建一个桶;如果不符合入桶规则那么新建一个桶。 入桶规则:只要比桶里最上边的数字小即可入桶,如果有多个桶可入,那么按照从左到右的顺序入 ...
排序算法 - 计数排序
基本思想计数排序是一种非基于比较的排序算法,其空间复杂度和时间复杂度均为O(n+k),其中k是整数的范围。基于比较的排序算法时间复杂度最小是O(nlogn)的。该算法于1954年由 Harold H. Seward 提出。 计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种 ...
排序算法 - 鸽巢排序
基本思想鸽巢排序是桶排序的一种,顾名思义,就是一排鸽巢,看里面有几个鸽巢,然后遍历这些鸽巢,打印出来就好,排序之前得先知道区间和最大值。 比如有数组a = [2,7,5,9,8,8],我们需要对这个数组进行排序,这是一个最大值不超过10的数组,那么我们定区间为0-10,定义一个下标0-10这样一个1 ...