Arrays类实现数组升序排序的方法:
Java类库提供了Arrays类,该类在 Java.util 包中 ,所以使用时要引入该类;
引入方法有如下两种:
1、import java.util.* ;
2、import java.util.Arrays ;
Arrays类实现数组升序排序方法一:
public static void sort( double a[ ] ) ;
该方法将 参数a 指定的 double类型数组进行升序排序 ;
如下代码演示:
import java.util.*;
public class Example4_11 {
public static void main(String args[]) {
//数组升序第一个方法:Arrays.sort(数组名);
int[] testint = { 12, 23, 56, 45, 1, 5, 98, 85 };
System.out.println(Arrays.toString(testint));
Arrays.sort(testint);
System.out.println(Arrays.toString(testint));
}
}
代码输出结果:
[12, 23, 56, 45, 1, 5, 98, 85]
[1, 5, 12, 23, 45, 56, 85, 98]
在以上代码中,Arrays.sort(testint); 负责数组的排序,而 Arrays.toString(testint) 则是负责输出数组 ;
注意:System.out.println(Arrays.sort(testint)); 是错误的,涉及到了方法源码返回类型的问题,有兴趣的可以去看一看;
Arrays类实现数组升序排序方法二:
public static void sort( double a[ ] , int start , int end ) ;
该方法将 参数a 指定的 double类型数组中索引 start ~ end - 1 的元素的值按升序排序 ;
如下代码演示:
import java.util.*;
public class Example4_11 {
public static void main(String args[]) {
//数组升序第二个方法:public static void sort( double a[ ] , int start , int end ) ;
int[] testint = { 12, 23, 56, 45, 1, 5, 11, 21 };
System.out.println(Arrays.toString(testint));
Arrays.sort(testint,2,6);
System.out.println(Arrays.toString(testint));
}
}
代码输出结果:
[12, 23, 56, 45, 1, 5, 11, 21]
[12, 23, 1, 5, 45, 56, 11, 21]
在以上代码中,数组的长度length 为6,则 Arrays.sort(testint,2,6); 方法中的 2 是从数组 testint[ 2 ] 算起的,也就是 1 ,而方法中的 6 是 从数组的 testint[ 6 - 1 ] 结束的,也就是 testint[ 5 ] ;
Arrays类判断数组的值是否存在的方法(二分法):
public static void binarySearch( double a[ ] , double number) ;
1、该方法判断参数 number 指定的数是否在参数 a 指定的数组中,即 number 是否和数组 a 中某个值相同,其中 数组 a 必须是已经排序后的数组;
2、当 number 的值与数组 a 中某个值相等,则 binarySearch( double a[ ] , double number) ; 方法会方法该元素的索引,否则返回一个负数;
如下代码演示:
import java.util.*;
public class Example4_11 {
public static void main(String args[]) {
//判断数组的值是否存在的方法:public static void binarySearch( double a[ ] , double number) ;
int[] testint = { 12, 23, 56, 45, 1, 5, 11, 21 };
Arrays.sort(testint);
System.out.println(Arrays.toString(testint));
System.out.println("判断number是否与数组中某个值相等,相等则输出该值的索引,不相等则输出一个负数:");
System.out.println(Arrays.binarySearch( testint , 11));
System.out.println(Arrays.binarySearch( testint , 2));
}
}
代码输出结果:
[1, 5, 11, 12, 21, 23, 45, 56]
判断整数 11 是否与数组中某个值相等,相等则输出该值的索引,不相等则输出一个负数:
2
-2
在以上代码中,11 是属于数组中的,所以输出了索引 2 ;而 2 是不属于数组中的,所以输出一个负数值;
注意:数组必须是已经排序后的数组才能进行判断;
例如以上代码中,将 Arrays.sort(testint); 去掉后再执行程序的话,代码输出结果都为负数;
练习扩展:
判断用户从键盘中输入的整数是否和数组中某个元素的值相同,相同则输出该值在数组中的索引;
import java.util.*;
public class Example4_11 {
public static void main(String args[]) {
//判断用户从键盘中输入的整数是否和数组中某个元素的值相同,相同则输出该值在数组中的索引;
System.out.println("请输入需要查询的数值,并按回车键(enter)结束输入。");
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
int[] test = { 12, 23, 56, 45, 1, 5, 11, 21 };
//对数组进行排序
Arrays.sort(test); //方法一
//返回数组值的索引
int index = Arrays.binarySearch(test, number);
//对数组返回的索引进行判断
if(index > 0){
System.out.println("输入的值"+number+"在数组中,且该值在数组中的索引为:"+index);
}else{
System.out.println("输入的值"+number+"不在数组中。");
}
}
}