JAVA中的sort排序

C++中提供了sort函数,可以让程序员轻松地调用排序算法,JAVA中也有相应的函数。

1.基本元素排序:Array.sort(排序数组名)

package test;
import java.util.*;

public class main
{
	public static void main(String args[])
	{
		Scanner cin=new Scanner(System.in);
		int a[];
		int i;
		a=new int[5];
		for (i=0;i<=4;i++)
		{
			a[i]=cin.nextInt();
		}
		Arrays.sort(a);
		for (i=0;i<=4;i++)
		{
			System.out.println(a[i]+" ");
		}
	}
}

2.基本元素从大到小排序:

由于要用到sort中的第二个参数,这个参数是一个类,所以应该用Integer,而不是int。可以使用Interger.intvalue()获得其中int的值

下面a是int型数组,b是Interger型的数组,a拷贝到b中,方便从大到小排序。capare中返回值是1表示需要交换。

package test;
import java.util.*;

class Mycomparator implements Comparator
{
	public int compare(Integer a,Integer b)
	{
		if (a>b)
		{
			return -1;
		}
		else if (a cmp=new Mycomparator();
		Arrays.sort(b,cmp);
		for (i=0;i<=4;i++)
		{
			System.out.println(b[i].intValue()+" ");
		}
	}
}

3.类排序。

和2差不多,都是重载比较器,以下程序实现了点的排序,其中x小的拍前面,x一样时y小的排前面

package test;
import java.util.*;

class point 
{
	int x,y;
	public String toString()
	{
		return "x="+x+" "+"y="+y;
	}
}

class pointComparator implements Comparator
{
	public int compare(point a,point b)
	{
		if (a.x>b.x)
		{
			return 1;
		}
		else if (a.xb.y)
			{
				return 1;
			}
			else if (a.y cmp=new pointComparator();
		Arrays.sort(a,cmp);
		for (i=0;i<=4;i++)
		{
			System.out.println(a[i]);
		}
	}
}


4.区间排序

如果只希望对数组中的一个区间进行排序,那么就用到sort中的第二个和第三个参数sort(a,p1,p2,cmp),表示对a数组的[p1,p2)(注意左闭右开)部分按cmp规则进行排序

你可能感兴趣的:(JAVA与Andriod)