JAVA中sort()函数的使用方法的个人总结

1.sort()函数的基本格式(默认排序为升序排序)

Arrays.sort(int[] a, int fromIndex, int toIndex);Arrays.sort(数组名,起始下标,终止下标);

一个简单的排序例子

import java.util.Arrays;
import java.util.Scanner;
import java.util.*;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc= new Scanner(System.in);
		int n=sc.nextInt();
		int[] a= new int[10001];
		for(int i=0;i

2.如果一个数组初始化时已经赋值。则sort函数可以另外一种格式

Arrays.sort(数组名);

ex:

    import java.util.*;  
    import java.util.Arrays;  
    public class Main {  
        public static void main(String[] args) {  
              
            Scanner sc=new Scanner(System.in);  
                int num[]= {5,4,3,2,1};                    
                Arrays.sort(num);                    
                for(int i=0;i<5;i++)  
                {  
                    System.out.println(num[i]);  
                      
                }  
          
      
        }  
    }  

cmp函数的格式:   int compare(Object o1, Object o2);

我们可以看到,传入函数的是java中的类(java中没有结构体)

这时,sort函数的格式变为:  Arrays.sort(数组名, 起始下标, 终止下标, new cmp());

 

 

怎么自定义排序呢?
基本方法

int compare(Object o1, Object o2) 返回一个基本类型的整型
如果要按照升序排序,
则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)
如果要按照降序排序
 则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数)

 

举个例子。-----输入n个数,然后降序排序。

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

class shu{
	int x;
}
class cmp implements Comparator{
	public int compare(shu a,shu b){
		if(a.xb.x){
			return -1;
		}
		else{
			return 0;
		}
		//可以简化成
		//return b.x-a.x
	}
}
public class Main {
	
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int n=sc.nextInt();
		shu num[] = new shu[100];
		for(int i=0;i

下面是一个变式,大体意思是输入一个字符串(名字),接着两个整数,可以代表成绩,首先按X排序,若相同,再看y,根据y排序,最后输出名字与两个成绩。

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

class shu{
	String name;
	int x;
	int y;
}
class cmp implements Comparator{
	public int compare(shu a,shu b){
		if(a.xb.x){
			return -1;
		}
		else{
			if(b.y>a.y){
				return 1;
			}
			else if(b.y

对名字按字母排序时可以用到的:

import java.text.CollationKey;
import java.text.Collator;
import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
import java.util.Locale;
import java.util.Scanner;

class shu{
	String name;
	int g;
}
class cmp implements Comparator{
	public int compare(shu a,shu b){
		if(b.g==a.g){
			 Collator collator = Collator.getInstance(Locale.ENGLISH);
			 CollationKey key1 = collator.getCollationKey(a.name);
			 CollationKey key2=collator.getCollationKey(b.name);
			 return key1.compareTo(key2);
//			int temp=b.name.charAt(0)-a.name.charAt(0);
//			return -temp;
		}
		else return b.g-a.g;
	}
}
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		shu[] a=new shu[100];
		for(int i=0;i

排序重点:

JAVA中sort()函数的使用方法的个人总结_第1张图片

你可能感兴趣的:(个人总结,备战lanqiao,java)