赞
踩
说到排序了话,很多大佬肯定都会,比如简单选择排序、冒泡排序、快速排序等等,估计我们也会想到C++中的sort吧,因为这个真的很实用,而且写起来也十分简短,但是吧,Java里的sort函数与C++里的sort函数的使用方法还是有点不同的。
首先:sort函数的基本格式如下(默认排序为升序排序)
Arrays.sort(数组名,起始下标,终止下标);
- 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();
- }
- }
(大家注意一下,这种情况下输入的数据一直要是整型,如果是其他类型,就一定会报错!!!)
- 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);
只需要写上数组名,然后再加上排序区间的起始下标和终止下标就可以了,保证区间是左开右闭:[起始下标,终止下标) !
- 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();
- }
- }
以上三种情况都是升序排序,那么下面我们来说说降序排序!!!
我们先来看看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(* ̄▽ ̄*)ブ
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。