5、数组的排序
排序算法,基本的高级语言都有一些提供。C语言有qsort()函数,C++有sort()函数,java语言有Arrays类(不是Array)。用这些排序时,都可以写自己的排序规则。
5.1 java.utill.Arrays类的sort()方法
Java API对Arrays类的说明是:此类包含用来操作数组(比如排序和搜索查询)的各种方法,即:Arrays类提供了很多方法操纵数组,如排序sort(),查询等。
说明:(1)Arrays类中的sort()使用的是“经过调优的快速排序法”;
(2)比如int[],double[],char[]等基数据类型的数组,Arrays类只是提供了默认的升序排列,没有提供相应的降序排列方法。
(3)要对基础类型的数组进行降序排序,需要将这些数组转化为对应的封装类数组,如Integer[],Double[],Character[]等,对这些类数组进行排序。(其实还不如先进行升序排序,自己在转为将序)。
Arrays类的sort()方法:对数组进行升序排列。
注:Arrays类只是提供了默认的sort()方法升序排列,没有提供相应的降序排列方法。
语法: 1)在类声明之前,引入Arrays类
import java.util.Arrays;
或 import java.util.*;
2) 对数组进行升序排列
Arrays.sort(数组);
案例:循环输入5位学员成绩,升序输出结果。
package two;
//import java.util.*; //法一:引入需要的Scanner和Arrays类
import java.util.Scanner; //法二:引入需要的Scanner和Arrays类
import java.util.Arrays;
public class test1 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in); //实例化scanner类
int[] arr=new int[5]; //声明一个数组,并且定义长度为5
for(int i=0;i<arr.length;i++) {
System.out.println("请输入学生成绩");
arr[i]=scan.nextInt(); //将成绩依次写入数组
}
Arrays.sort(arr);//对arr数组进行升序排列
for(int i=0;i<arr.length;i++) { //依次将排列后的数据输出
System.out.println(arr[i]);
}
}
}
结果如下:
案例:循环输入一串字符AZB…,倒叙输出结果
package two;
import java.util.*;//引入Scanner和Arrays类
public class test2 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);//实例化Scanner类
String[] arr=new String[5]; //声明一个字符串类型的数组,并且定义长度为5
for(int i=0;i<arr.length;i++) {
System.out.println("请输入字符串");
arr[i]=scan.next(); //依次接收字符串存入数组中
}
Arrays.sort(arr); //先将数组进行升序排列
for(int i=arr.length;i>0;i--) { //要倒叙输出,就先输出下标最大那个
System.out.println(arr[i-1]); //共有i个,下标最大那个为i-1
}
scan.close();
}
}
结果如下:
每日一言:日复一日,刻苦专研!