一个会排序的Vector

原创 2004年07月18日 11:21:00

import?java.util.*;
interface?Compare?{
??boolean?lessThan(Object?lhs,?Object?rhs);
??boolean?lessThanOrEqual(Object?lhs,?Object?rhs);
}
////////////////////////////////////////////////////////////////////
class?SortVector?extends?Vector?{
??private?Compare?compare;?
//?To?hold?the?callback
??public?SortVector(Compare?comp)?{
????compare?=?comp;
??}
??public?void?sort()?{
????quickSort(0,?size()?-?1);
??}
??
//?快速排序
??private?void?quickSort(int?left,?int?right)?{
????if(right?>?left)?{
??????Object?o1?=?elementAt(right);
??????int?i?=?left?-?1;
??????int?j?=?right;
??????while(true)?{
????????while(compare.lessThan(
??????????????elementAt(++i),?o1));
????????while(j?>?0)
??????????if(compare.lessThanOrEqual(elementAt(--j),?o1))
???????????????break;?
//?out?of?while
????????if(i?>=?j)?break;
????????swap(i,?j);
??????}
??????swap(i?,?right);
??????quickSort(left,?i-1);
??????quickSort(i+1,?right);
????}
??}
??
//交换位置
??private?void?swap(int?loc1,?int?loc2)?{
????Object?tmp?=?elementAt(loc1);
????setElementAt(elementAt(loc2),?loc1);
????setElementAt(tmp,?loc2);
??}
}
////////////////////////////////////////////////////////////////////
public?class?StringSortTest?{
??
//?自定义比较规则
??static?class?StringCompare?implements?Compare?{
????public?boolean?lessThan(Object?l,?Object?r)?{
??????return?((String)l).toLowerCase().compareTo(
????????((String)r).toLowerCase())?<?0;
????}
????public?boolean?
????lessThanOrEqual(Object?l,?Object?r)?{
??????return?((String)l).toLowerCase().compareTo(
????????((String)r).toLowerCase())?<=?0;
????}
??}
??public?static?void?main(String[]?args)?{
????SortVector?sv?=?
??????new?SortVector(new?StringCompare());
????
//?添加Element
????sv.addElement(
"d");
????sv.addElement(
"A");
????sv.addElement(
"C");
????sv.addElement(
"c");
????
//?排序
????sv.sort();
????Enumeration?e?=?sv.elements();
????
//?输出结果
????while(e.hasMoreElements())
??????System.out.println(e.nextElement());
??}
}

代码详解:
因为我们要做一个会排序的Vector,所以class?SortVector?extends?Vector.?
interface?Compare
的作用是定义统一的比较大小的接口.

注意class?StringCompare?,在它里面定义了String比较大小的规则,?以后我们如何想写个XXXXVector,?只要在写个class?XXXXXCompare?implements?Compare就好了.

C++中,结构体vector使用sort排序

一、遇到问题: 今天写代码的是遇到想对vector进行排序的问题,隐约记得std::sort函数是可以对vector进行排序的,但是这次需要排序的vector中压的是自己定义的结构体(元素大于等于2)...
  • zhouxun623
  • zhouxun623
  • 2015年11月17日 14:53
  • 21026

利用STL中的sort算法对向量等容器进行排序

STL中有一个sort函数,可以直接对vector等容器进行排序,使用该算法需要包含头文件#include ;并且声明命名空间usingnamespace std;        sort函数可以传...
  • wangkai_123456
  • wangkai_123456
  • 2015年12月29日 14:48
  • 2280

Java用vector容器排序

Java用vector容器排序 /** * 功能:定义一个Student数组,其中保存学生的基本信息,包括姓名,学号,性别,还有三门课的成绩 * 和课程对应的学分,计算出学分积,降序排序 ...
  • cutter_point
  • cutter_point
  • 2014年06月04日 17:58
  • 2080

c++实现vector类,并有一个排序和一个查找的泛型算法

在学习c++的过程中,刚开始用STL中的vector,感觉特别方便,于是自己实现了其中的部分功能,体验一下写库的过程...
  • Pqcheng
  • Pqcheng
  • 2016年11月15日 23:29
  • 120

一个空的vector执行pop_back操作会发生什么?

由于之前看STL源码剖析的时候,发现所执行的操作如下: 只是简单的将末尾的finish迭代器减1后destroy。这让人产生一个疑问:假如这个vector为空了,finish=start了,fin...
  • huoyaotl123
  • huoyaotl123
  • 2015年07月23日 20:54
  • 2619

vector中的排序的源代码资源

  • 2010年07月02日 11:08
  • 46KB
  • 下载

&lt;vector&gt;排序

  • 2015年07月13日 23:40
  • 3.46MB
  • 下载

单例模板类+vector排序

  • 2017年03月10日 16:56
  • 1.9MB
  • 下载

使用基类管理一个时钟的列表(可以使用STL的vector)

  • 2011年05月19日 12:10
  • 604KB
  • 下载

潮流计算(运用vector实现矩阵的运算,包括返回一个矩阵,运用复数库对复数进行操作)

  • 2010年04月22日 20:19
  • 10KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个会排序的Vector
举报原因:
原因补充:

(最多只允许输入30个字)