oj链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1196

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

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

 public static class Data implements Comparable<Object> {
private int num;
private int step; @Override
public int compareTo(Object arg0) {
Data other = (Data)arg0;
if(other.num > this.num)
return -1;
if(other.num == this.num)
return 0;
return 1;
}
}

Data 内部类

话说内部类不需要get和set方法。。

然后是需要提交的类中的main方法

 private static Scanner input;

 public static void main(String[] args) {
input = new Scanner(System.in);
Data[] tmp = new Data[10];
for(int i = 0; i < 10; i++) {
tmp[i] = new Data();
tmp[i].num = input.nextInt();
tmp[i].step = i + 1;
}
Arrays.sort(tmp);
//下面的代码只是为了实现题目要求的输出格式
for(int i = 0; i < 9; i++) {
System.out.print(tmp[i].num + " ");
}
System.out.println(tmp[9].num);
for(int i = 0; i < 9; i++) {
System.out.print(tmp[i].step + " ");
}
System.out.println(tmp[9].step);
}

main方法

然后是自己写的泛型MySort方法,依旧没有异常处理,ACM用的。。

 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方法

有不足之处谢谢指出!

Java 泛型快速排序 以sdut 1196为例的更多相关文章

  1. java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类、内部类应用于泛型探讨

    java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类.内部类应用于泛型探讨 //Sets.java package org.rui.generics.set; import j ...

  2. java泛型基础

    泛型是Java SE 1.5的新特性, 泛型的本质是参数化类型, 也就是说所操作的数据类型被指定为一个参数. 这种参数类型可以用在类.接口和方法的创建中, 分别称为泛型类.泛型接口.泛型方法.  Ja ...

  3. Java—泛型

    泛型是JDK 5 中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型.泛型本质是参数化类型,也就是所操作的数据类型指定为一个参数. 假定我们有这样一个需求: ...

  4. Java深度历险(五)——Java泛型

      作者 成富 发布于 2011年3月3日 | 注意:QCon全球软件开发大会(北京)2016年4月21-23日,了解更多详情!17 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件 ...

  5. Java泛型学习笔记 - (七)浅析泛型中通配符的使用

    一.基本概念:在学习Java泛型的过程中, 通配符是较难理解的一部分. 主要有以下三类:1. 无边界的通配符(Unbounded Wildcards), 就是<?>, 比如List< ...

  6. Java泛型-内部原理: 类型擦除以及类型擦除带来的问题

    一:Java泛型的实现方法:类型擦除 大家都知道,Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,正确理解泛型概念的首要前提是理解类型擦除.Java的泛型基本上都是在编译 ...

  7. java 深度探险 java 泛型

    Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter).声明的类型参数在使用时用具体的类型来替换.泛型最主要的应用是在JD ...

  8. Java泛型总结

    1. 什么是泛型?泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的 ...

  9. java泛型的讲解

    java泛型 什么是泛型? 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指 ...

随机推荐

  1. 机房收费系统(VB.NET)——存储过程实战

    最初接触存储过程是在耿建玲老师的视频里,当初仅仅是草草过了一遍.仅仅是有了个印象.知道了这个名词:大二时也有SqlServer数据库这门课,只是老师没讲,自己也没看:真正对存储过程的了解来自于自学考试 ...

  2. [转]BeagleBone Black USB一线通(2)

    接上篇  BeagleBone Black USB 一线通(1) 三.网络与ssh终端 通过串口终端我们可以看到启动的过程,也能做一些交互操作,比如我们看到了网络接口的状况.其中的usb0已经在随板的 ...

  3. Android 自定义View修炼-实现自定义圆形、圆角和椭圆ImageView(使用Xfermode图形渲染方法)

    一:简介: 在上一篇<Android实现圆形.圆角和椭圆自定义图片View(使用BitmapShader图形渲染方法)>博文中,采用BitmapShader方法实现自定义的圆形.圆角等自定 ...

  4. bootstrap系列整理

    去年的九月份做第一版文档站时, 就开始尝试使用bootstrap ,由于当时对node 还一知半解,大部分精力放在nodejs上,bootstrap只是拿来就用,起步文档都没看: 当别人提到 Norm ...

  5. 使用Keytool工具生成证书Keystore和证书签名请求文件

    内容概览: keytool的几个常用的命令. 1.创建证书 2.查看证书库 3.导出证书文件 4.导入证书的信息 5.查看证书信息 6.删除密钥库中的条目 7.修改证书条目的口令 ---------- ...

  6. WINDOWS Server2003上部署一个Asp.Net的网站

    对于许多新手来说,如何在服务器上部署网站并不了解,这个教程希望对新手有帮助. 1.IIS服务器 2..Net Framework3.5 (方便起见,我们这里Framework说的都是指的这个版本) 这 ...

  7. 编译LFS

    成功编译并运行linux from scratch 7.7 system,有必要作下总结.本次用的编译LFS的环境是: 虚拟机是virtalbox宿主系统为CentOS 7.0 x86_64 (cor ...

  8. 新增的html5中js获取方法

    一.querySelector   获取的选择器与jquery的选择器相同

  9. 移动端布局Demo展示图文

    上两张图自勉一下(来自刘墉先生的文章,最近看他的作品):然后移动端该愈来愈受到重视,未来的市场我不知道,不过我知道手机的功能越来越强大是不争的事实!移动端布局的积累也需要从现在做起! 需求一:实现下图 ...

  10. ionic 安装教程

    2015-10-08:国庆回来发现有新版本了,特意更新结果命令失效了,然后重新装吧,结果也失败多次 大概6-7次左右,然后系统是win10,可以启用管理员命令窗口进行安装,第二次成功了!   1.准备 ...