基本思想先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。希尔排序,也称递减增量排序算法,是插入排序的一种高速而稳定的改进版本。 操作方法 选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1; 按增量 ...
排序算法 - 珠排序
基本思想将每个数用珠子表示,例如:数字5就是5个珠子。用珠子表示好每一个数后,让所有的珠子自由下落。排序完成。 上图中的三个珠就表示数字3,两个珠表示数字2,这个OK了继续,这里的3和2都叫bead。 上图(a)中有两个数字,4和3,分别串在四条线上,于是数字4的最后一个珠子下落,因为它下边是空的, ...
排序算法 - 简单选择排序
基本思想在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。 操作方法第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换;第二趟,从 ...
排序算法 - 直接插入排序
基本思想将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。 操作方法 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素( ...
设计模式-设计模式简介
设计模式简介设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使用的、多数人知晓的、经过 ...
Java多线程-03之-Thread中start()和run()的区别
start()和run()方法的区别start(): 它的作用是启动一个新线程,新线程会执行相应的run()方法。start()不能被重复调用。 run(): run()就和普通的成员方法一样,可以被重复调用。单独调用run()的话,会在当前线程中执行run(),而并不会启动新线程! 下面以代码来进 ...
Git学习之~cherry-pick、revert、reset介绍
** gti checkout – filename **git checkout – filename 可以把工作区的某个文件的修改撤回到上一次add或者commit的状态,不过filename不能省略.可以使用 git checkout – 不加文件名来查看当前工作区修改了哪些文件,这个只是针对 ...
Git学习之~合并指定文件或Commits到另一分支
刚使用git进行版本管理的时候,由于成员间的代码有的需要上线,有的不需要上线,如果直接merge,经常会把别人不需要上线的代码合并的master,导致问题从生。所以,最稳妥的是只合并你需要的那些commits,不需要的commits就不合并进去。那么如何从一个分支合并特定的文件或者Commits到另 ...
Java多线程-02之 多线程实现方式
实现多线程的几种方式 继承Thread类 实现Runnable接口 通过Callable和Future 通过线程池 Thread和Runnable简介RunnableRunnable是一个接口库,该接口只包含了一个run()方法,定义如下: public interface Runnable ...