Java中sort函数的几种使用方法

Begin:

说到排序了话,很多大佬肯定都会,比如简单选择排序、冒泡排序、快速排序等等,估计我们也会想到C++中的sort吧,因为这个真的很实用,而且写起来也十分简短,但是吧,Java里的sort函数与C++里的sort函数的使用方法还是有点不同的。 

首先:sort函数的基本格式如下(默认排序为升序排序)

Arrays.sort(数组名,起始下标,终止下标);

①:(输入n个整型数据,将它们按照从小到大的顺序输出) 

import java.util.*;
public class Main
{
	public static void main(String[] args)
	{
		Scanner input=new Scanner(System.in);
		while(input.hasNext())
		{
			int a[]=new int[101];
			int n=input.nextInt();
			for(int i=0;i<n;i++)
				a[i]=input.nextInt();
			Arrays.sort(a,0,n);//默认升序
			for(int i=0;i<n;i++)
				System.out.print(a[i]+" ");
			System.out.println();
		}
		input.close();
	}
}

 ①:程序运行结果:

(大家注意一下,这种情况下输入的数据一直要是整型,如果是其他类型,就一定会报错!!!)

②:(输入n个浮点型数据,将它们按照从小到大的顺序输出)

import java.util.*;
public class Main
{
	public static void main(String[] args)
	{
		Scanner input=new Scanner(System.in);
		while(input.hasNext())
		{
			double a[]=new double[101];
			int n=input.nextInt();
			for(int i=0;i<n;i++)
				a[i]=input.nextDouble();
			Arrays.sort(a,0,n);
			for(int i=0;i<n;i++)
				System.out.print(a[i]+" ");
			System.out.println();
		}
		input.close();
	}
}

 ②:程序运行结果:

 

以上两种情况都是对数组进行全部数据的排序,那么我们如果想对数组进行局部排序,就可以这样写↓↓↓

Arrays.sort(a,0,3);

 只需要写上数组名,然后再加上排序区间的起始下标和终止下标就可以了,保证区间是左开右闭:[起始下标,终止下标) !

③:(如果一个数组在初始化的时候已经被赋值。则sort函数可以用另外一种格式)

import java.util.*;
public class Main
{
	public static void main(String[] args)
	{
		Scanner input=new Scanner(System.in);
		int a[]= {5,4,3,2,1};
		Arrays.sort(a);
		int len=a.length;//如果数组中元素个数过多,数着比较麻烦,建议这样写
		for(int i=0;i<len;i++)
			System.out.print(a[i]+" ");
		System.out.println();
		input.close();
	}
}

 ③:程序运行结果:

 

 以上三种情况都是升序排序,那么下面我们来说说降序排序!!!

 ④:(利用Java中sort函数中的cmp函数来实现自定义排序)

我们先来看看cmp函数的格式 

int compare(Object o1,Object o2);

我们可以看到,传入函数的是Java中的类(Java中没有结构体),这时,sort函数的格式变为

Arrays.sort(数组名,起始下标,终止下标,new cmp());

那么实现自定义排序的方法如下:↓↓↓

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

 ④:程序代码:

import java.util.*;
class shu//创建类
{
	int x;
}
class cmp implements Comparator<shu>
{
	public int compare(shu a,shu b)//降序排序函数
	{
		if(a.x<b.x)
			return 1;
		else if(a.x==b.x)
			return 0;
		else
			return -1;
	}
}
public class Main
{
	public static void main(String[] args)
	{
		Scanner input=new Scanner(System.in);
		while(input.hasNext())
		{
			shu a[]=new shu[101];//创建类数组
			int n=input.nextInt();
			for(int i=0;i<n;i++)
			{
				a[i]=new shu();//这个地方容易漏掉!!!
				a[i].x=input.nextInt();
			}
			Arrays.sort(a,0,n,new cmp());//new cmp()
			for(int i=0;i<n;i++)
				System.out.print(a[i].x+" ");
			System.out.println();
		}
		input.close();
	}
}

④:程序运行结果:

 

以上就是我这个小水货对Java中sort函数的几种使用方法的总结,希望能帮助到大家!!! o(* ̄▽ ̄*)ブ   

发布了294 篇原创文章 · 获赞 304 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_43823808/article/details/104165338