1. 程式人生 > >JAVA中的sort排序

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<Integer>
{
	public int compare(Integer a,Integer b)
	{
		if (a>b)
		{
			return -1;
		}
		else if (a<b)
		{
			return 1;
		}
		return 0;
	}
}

public class main
{
	public static void main(String args[])
	{
		Scanner cin=new Scanner(System.in);
		int a[];
		Integer b[];
		int i;
		a=new int[5];
		b=new Integer[5];
		for (i=0;i<=4;i++)
		{
			a[i]=cin.nextInt();
			b[i]=new Integer(a[i]);
		}
		Comparator<Integer> 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<point>
{
	public int compare(point a,point b)
	{
		if (a.x>b.x)
		{
			return 1;
		}
		else if (a.x<b.x)
		{
			return -1;
		}
		else
		{
			if (a.y>b.y)
			{
				return 1;
			}
			else if (a.y<b.y)
			{
				return -1;
			}
		}
		return 0;
	}
}

public class main
{
	public static void main (String[] args)
	{
		Scanner cin=new Scanner(System.in);
		int i,b;
		point a[]=new point[5];
		for (i=0;i<=4;i++)
		{
			a[i]=new point();
			a[i].x=cin.nextInt();
			a[i].y=cin.nextInt();
		}
		Comparator<point> 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規則進行排序