JAVA中的sort排序
阿新 • • 發佈:2018-12-29
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規則進行排序