排序算法类模板

排序算法类模板中约定了一些方法:

  • sort()方法:排序算法的具体实现。
  • less()方法:对元素进行比较。
  • exch()方法:将元素交换位置。
  • show()方法:打印数组。
  • isSort()方法:测试数组元素是否有序。
  • main()方法:测试函数。
public class Example {
	public static void sort(Comparable[] a){
        //排序
	}
	private static boolean less(Comparable<Comparable> v,Comparable w){
        //比较
		return v.compareTo(w)<0;
	}
	private static void exch(Comparable[] a, int i,int j){
        //交换
		Comparable t = a[i];a[i] = a[j];a[j] = t;
	}
	private static void show(Comparable[] a){
        //打印
		for(int i = 0; i<a.length;i++)
			System.out.print(a[i]+" ");
		System.out.println();
	}
	public static boolean isSorted(Comparable[] a){
        //测试是否有序
		for(int i=1;i<a.length;i++)
			if(less(a[i],a[i-1]))	return false;
		return true;
	}
	public static void main(String[] args){
        //测试排序方法以及性能
	}
}

此排序算法类模板适用于任何实现了Comparable接口的数据类型。Java中封装的数字类型和String类型以及许多高级数据类型(如File和URL)都实现了此接口。

在创建自己的类时,只要实现Comparable接口就可以用示例代码将其排序。要做到这一点只需在自己的类中实现compareTo()方法定义目标类型对象的自然排序。compareTo()实现了主键抽象----它给出了实现了Comparable接口的任意数据类型的对象的大小顺序的定义。

Comparable接口位于java.lang包中,要实现此接口只需要实现comareTo()方法即可。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏学海无涯

12.Any、AnyObject与类型转化

19540
来自专栏软件开发 -- 分享 互助 成长

java中的==和equals

一、使用==判断两个变量是否相等 (1)对于基本类型的变量,值相等则返回true (2)对于引用类型的变量,只有指向同一个对象时才返回true。 ==不可以比较...

20760
来自专栏大闲人柴毛毛

三分钟理解“原型模式”——设计模式轻松掌握

原型模式的官方定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 大白话: 现在有一个类,它要产生大量的对象,而且这些对象中的属性值大部分...

383140
来自专栏开发与安全

面向对象编程风格 VS 基于对象编程风格(boost::bind/function)

本文主要通过实现Thread 类来展现两种编程风格的不同点。 很多人没有区分“面向对象”和“基于对象”两个不同的概念。面向对象的三大特点(封装,继承,多态)缺...

26200
来自专栏互联网杂技

简单理解通过原型继承

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head>...

32750
来自专栏龙首琴剑庐

Java可变参数列表

1、接受的传入参数情况 如public void test(String ...args){...}  1)不使用参数,如test() 2)使用一个或多个参数,...

34370
来自专栏琯琯博客

排序算法-插入排序

排序算法-插入排序 <?php /** * 插入排序. * * @param array $value 待排序数组 * @param integer $...

28790
来自专栏行者常至

final、abstract、interface

【包含抽象方法的类一定是抽象类;抽象类中可包括非抽象方法(具体的方法)。抽象类无法实例化,不能创建对象,只能通过子类继承,然后通过方法覆盖。如果不覆盖抽象方法,...

10010
来自专栏项勇

笔记23 | 复习for/while/do...while的几种循环用法

19270
来自专栏跟着阿笨一起玩NET

C#基础知识之方法重载总结

方法重载是指在同一个类中方法同名,参数不同,调用时根据实参的形式,选择与他匹配的方法执行操作的一种技术。

11920

扫码关注云+社区

领取腾讯云代金券