实现数组快速升序排序、输入一个值判断该值是否存在数组中

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+"不在数组中。");
		}
	}
}
发布了57 篇原创文章 · 获赞 10 · 访问量 7549

猜你喜欢

转载自blog.csdn.net/LagerSwan/article/details/104154864