泛型希尔排序
/**
* 希尔排序
*
* @param array
* @param <C>
*/
public static <C extends Comparable> void sort(C[] array) {
if (null == array || 1 >= array.length) {
return;
}
// 奇数补1,偶数不补
int skip = array.length / 2 + (array.length % 2 == 1 ? 1 : 0);
while (skip >= 1) {
for (int i = 0; i + skip < array.length; i++) {
cas(array, i, i + skip);
}
skip /= 2;
}
}
/**
* 比较/交换值
*
* @param array
* @param a
* @param b
* @param <C>
*/
@SuppressWarnings("unchecked")
private static <C extends Comparable> void cas(C[] array, int a, int b) {
if (array[a].compareTo(array[b]) > 0) {
C t = array[a];
array[a] = array[b];
array[b] = t;
}
}

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
(七)Java并发学习笔记--并发容器(J.U.C)
并发容器之CopyOnWriteArrayList Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。CopyOnWrite容器非常有用,可以在非常多的并发场景中使用到。 什么是CopyOnWrite容器 CopyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以CopyOnWrite容器也是一种读写分离的思想,读和写不同的容器。 CopyOnWriteArray...
-
下一篇
找找第k个数在第几堆里
/** * 找找第k个数在第几堆里,例如: * int k = 25; * int[] array = new int[]{10, 12, 14, 15}; * 答案是 3 . * * @param heaps * @param k * @return */ public static int whereAmI(int[] heaps, int k) { if (null == heaps || 0 == heaps.length || 0 >= k) { return -1; } int[] heapRecord = new int[heaps.length]; int sum = 0; for (int i = 0; i < heaps.length; i++) { sum += heaps[i]; heapRecord[i] = sum; } if (k > sum) { return -1; } return 1 + whereAmI(heapRecord, 0, heaps.length - 1, k); } private static int where...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL数据库在高并发下的优化方案
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8编译安装MySQL8.0.19
- SpringBoot2全家桶,快速入门学习开发网站教程