相对优先排序和绝对优先排序的效率比较
来源:互联网 发布:网络电视是什么信号源 编辑:程序博客网 时间:2024/05/22 13:11
package tezhongbing.sort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.apache.commons.lang.math.RandomUtils;
/**
* 相对优先排序和绝对优先排序的效率比较
* @author zhaoyujie
*相对优先排序就是下标位置为k的元素和k/2位置的元素比较,如果k位置的元素小于k/2位置的元素,就互换。按照这个规则继续向前比较。
*相对排序比绝对排序的效率高,并且随着要排序元素数量的增加,效率的差距越大。
*/
public class RelativeAndAbsoluteSort {
private static List<Integer> list = new ArrayList<Integer>();
private static List<Integer> list2 = new ArrayList<Integer>();
public static void main(String[] args) {
for(int i=0;i<100000;i++){
list.add(RandomUtils.nextInt());
}
list2.addAll(list);
sortRelativeList();
sortAbsoluteList();
}
private static void sortAbsoluteList() {
long begin = System.currentTimeMillis();
Collections.sort(list2, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1-o2;
}
});
long end = System.currentTimeMillis();
System.out.println("绝对优先排序用时:"+(end-begin)+"毫秒");
}
private static void sortRelativeList() {
long begin = System.currentTimeMillis();
for (int i = 0; i < list.size(); i++) {
siftUp(i);
}
long end = System.currentTimeMillis();
System.out.println("相对优先排序用时:"+(end-begin)+"毫秒");
}
private static void siftUp(int k) {
Integer x = list.get(k);
while (k > 0) {
int parent = (k - 1) >>> 1;
Integer e = list.get(parent);
if (x >= e)
break;
list.set(k, e);
k = parent;
}
list.set(k, x);
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.apache.commons.lang.math.RandomUtils;
/**
* 相对优先排序和绝对优先排序的效率比较
* @author zhaoyujie
*相对优先排序就是下标位置为k的元素和k/2位置的元素比较,如果k位置的元素小于k/2位置的元素,就互换。按照这个规则继续向前比较。
*相对排序比绝对排序的效率高,并且随着要排序元素数量的增加,效率的差距越大。
*/
public class RelativeAndAbsoluteSort {
private static List<Integer> list = new ArrayList<Integer>();
private static List<Integer> list2 = new ArrayList<Integer>();
public static void main(String[] args) {
for(int i=0;i<100000;i++){
list.add(RandomUtils.nextInt());
}
list2.addAll(list);
sortRelativeList();
sortAbsoluteList();
}
private static void sortAbsoluteList() {
long begin = System.currentTimeMillis();
Collections.sort(list2, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1-o2;
}
});
long end = System.currentTimeMillis();
System.out.println("绝对优先排序用时:"+(end-begin)+"毫秒");
}
private static void sortRelativeList() {
long begin = System.currentTimeMillis();
for (int i = 0; i < list.size(); i++) {
siftUp(i);
}
long end = System.currentTimeMillis();
System.out.println("相对优先排序用时:"+(end-begin)+"毫秒");
}
private static void siftUp(int k) {
Integer x = list.get(k);
while (k > 0) {
int parent = (k - 1) >>> 1;
Integer e = list.get(parent);
if (x >= e)
break;
list.set(k, e);
k = parent;
}
list.set(k, x);
}
}
0 0
- 相对优先排序和绝对优先排序的效率比较
- 堆排序和 优先队列
- 堆排序和优先队列
- 优先队列和堆排序
- 优先队列和堆排序
- 优先队列和堆排序
- 新的Sql分页的方法,效率绝对优先。
- 低位优先的字符串排序
- 高位优先的字符串排序
- 优先队列的排序写法
- 低位优先的字符串排序
- 堆和堆的应用:堆排序和优先队列
- 希尔排序和快速排序的效率比较
- 相对、绝对和固定定位的比较
- 基于堆的优先队列和堆排序
- 图的拓扑排序,广度和深度优先搜索
- 基于二叉堆实现的优先队列和堆排序
- java 图的深度优先与广度优先排序
- Unity-Editor 编辑Inspector面板数据保存问题
- Linux kill, killall, kill -9
- RTL布局支持
- monkey&monkeyrunner学习笔记
- 信号完整性分析-传播速度
- 相对优先排序和绝对优先排序的效率比较
- Linux与安卓手机利用FTP互连
- 访问的网页自动打开QQ对话
- 【读书札记】《北大授课》中华文化四十七讲 余秋雨
- 深入理解Java虚拟机
- 五绝.天门山
- (C++ 11) 泛型算法(二)- 定制操作
- POJ 1006 Biorhythms
- LeetCode Second Highest Salary