
基础排序-java
少年仍需努力
目前刚刚起步。
展开
-
基础排序-冒泡排序-java
冒泡算法的运作规律如下: ①、比较相邻的元素。如果第一个比第二个大,就交换他们两个。 ②、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数(也就是第一波冒泡完成)。 ③、针对所有的元素重复以上的步骤,除了最后一个。 ④、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。具体代码如下:package ...原创 2018-04-27 17:42:27 · 195 阅读 · 0 评论 -
快速排序--java
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。下面直接看代码:publi...原创 2019-02-11 11:03:35 · 247 阅读 · 0 评论 -
Java常见设计模式
https://www.jianshu.com/p/1c3a7ab5c527一、单例模式定义:单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。二、单例模式特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。说一说单例模式?它是怎么实现的?怎么保证这个单例是线程安全的?饿汉...原创 2019-08-20 11:16:46 · 171 阅读 · 0 评论 -
java实现二分查找-两种方式
二分查找算法思想有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次缩小一半的查找范围,直到匹配成功。一个情景:将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表...转载 2019-08-20 11:23:09 · 221 阅读 · 0 评论 -
10亿个数中找出最大的10000个数(top K问题)
https://blog.youkuaiyun.com/will130/article/details/49635429问题:先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大的10000个。建堆时间复杂度是O(mlogm),算法的时间复杂度为O(nmlogm)(n为10...转载 2019-08-20 11:59:26 · 351 阅读 · 0 评论 -
五大查找之:哈希查找 解决hash冲突
https://www.cnblogs.com/wuchao解决hash冲突的三个方法目录开放定址法 线性探测再散列 二次探测再散列 伪随机探测再散列 再哈希法 链地址法 建立公共溢出区 优缺点 开放散列(open hashing)/ 拉链法(针对桶链结构) 封闭散列(closed hashing)/ 开放定址法 通过构造性能良好的哈希函数,可以减少冲...转载 2019-08-20 12:07:51 · 1101 阅读 · 0 评论