您的位置:首页 > 编程语言 > Java开发

Java 泛型快速排序 以sdut 1196为例

2013-11-28 11:47 357 查看
oj链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1196

Java中,Arrays.sort()静态方法就是利用的快速排序,(看到网上有的说用的归并排序,测试了下,跟自己写的快速排序消耗的时间和空间都一样,所以确定是快速排序),对类的集合排序,需要实现Comparable接口,(类似C++ STL中sort函数需要的小于号)。初学Java集合,记录一下。初学者。。下面是调用Arrays.sort()和自己实现的泛型MySort()的两种写法:

首先是一个内部类:(上面链接的题目要求)

private static <T extends Comparable<Object>> void quick_sort(T[] s, int l, int r) {
if(l >= r) return;
int i = l, j = r;
T x = s[l];
while(i < j) {
while(i < j && s[j].compareTo(x) >= 0)
j--;
if(i < j)
s[i++] = s[j];
while(i < j && s[i].compareTo(x) < 0)
i++;
if(i < j)
s[j--] = s[i];
}
s[i] = x;
quick_sort(s, l, i-1);
quick_sort(s, i+1, r);
}

private static <T extends Comparable<Object>> void MySort(T[] data) {
quick_sort(data, 0, data.length-1);
}


MySort方法
有不足之处谢谢指出!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: