最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
java数组降序和升序排序例子
时间:2022-11-14 23:25:47 编辑:袖梨 来源:一聚教程网
java.util.Arrays 类中提供了几个静态方法用来对数组进行排序。例如:使用Arrays.sort(),然后将数组作为参数传入,然后返回排序完的数组。java中,我们也可以使用升序或降序,或者是自定义comparator来进行排序。
对java数组进行升序排序
对数组(String,int等类型)进行升序排序,我们可以直接使用Arrays.sort()方法,该方法会默认根据CompareTo方法实现的自然顺序(natral order)进行升序排序。所谓自然顺序,如对于String类型,根据字母表进行排序,对于整数类型,则按数字的大小进行排序。我们也可以使用该方法对匿名数组进行排序,不过这并没哟什么实际意义。
对java数组进行降序排序
为了对java数组实现降序排序,你需要提供一个外部的Comparator
来对元素按相反的顺序排序。不过,java的api中给我们提供了这样java.util.Collections.reverseOrder()方法,该方法返回一个与自然顺序相反的comparator。将这个comparator作为参数传给sort方法,就可以实现降序排序了。当然也可以先将数组转换为ArrayList,然后调用ArrayList的reverse()方法,再转换为数组。不过最好还是使用Arrays.sort()方法。
对java数组中的子数组进行排序
Arrays类提供了对数组的部分元素进行排序的方法。例如,你可能有一个很多的数组,而你只需要对于特定的一段进行排序,那么可以使用java.util.Arrays.sort(array,index,index) ,它只会对指定范围内的元素进行排序。这比对整个数组进行排序要快。
下面贴出完整的代码:
import java.util.Arrays;
import java.util.Collections;
public class HashtableDemo {
public static void main(String args[]) {
String[] companies = { "Google", "Apple", "Sony" };
// sorting java array in ascending order
System.out.println("Sorting String Array in Ascending order in Java Example");
System.out.println("Unsorted String Array in Java: ");
printNumbers(companies);
Arrays.sort(companies);
System.out.println("Sorted String Array in ascending order : ");
printNumbers(companies);
// sorting java array in descending order
System.out.println("Sorting Array in Descending order in Java Example");
System.out.println("Unsorted int Array in Java: ");
printNumbers(companies);
Arrays.sort(companies, Collections.reverseOrder());
System.out.println("Sorted int Array in descending order : ");
printNumbers(companies);
System.out.println("Sorting part of array in java:");
int[] numbers = { 1, 3, 2, 5, 4 };
Arrays.sort(numbers, 0, 3);
System.out.println("Sorted sub array in Java: ");
for (int num : numbers) {
System.out.println(num);
}
}
public static void printNumbers(String[] companies) {
for (String company : companies) {
System.out.println(company);
}
}
}
Output:
Sorting String Array in Ascending order in Java Example
Unsorted String Array in Java:
Google
Apple
Sony
Sorted String Array in ascending order :
Apple
Google
Sony
Sorting Array in Descending order in Java Example
Unsorted int Array in Java:
Apple
Google
Sony
Sorted String Array in descending order :
Sony
Google
Apple
Sorting part of array in java:
Sorted sub array in Java:
1
2
3
5
4
关于Arrays.sort()方法的重要点:
1.Arrays.sort()是一个重载的方法。可以对int,byte,short,char或这Object[]数组进行排序。
2.Arrays.sort()也可以数组的子数组进行排序
3.Arrays类还提供了其他一些工具方法,如binarySearch折半查找对数组进行查找
例子
用默认的升序对数组排序
函数原型:static void sort(int[] a) 对指定的 int 型数组按数字升序进行排序。
static void sort(int[] a, int fromIndex, int toIndex) 对指定 int 型数组的指定范围按数字升序进行排序。
代码实例:
import java.util.Arrays;
public class ArraysSort_11 {
public static void main(String args[])
{
int[] a={1,4,-1,5,0};
Arrays.sort(a);
//数组a[]的内容变为{-1,0,1,4,5}
for(int i=0;i
System.out.print(a[i]+" ");
}
}
2.对复合数据类型的数据的排序
函数原型: (1)public static
(2)public static
说明:这个两个排序算法是“经过调优的合并排序”算法。
代码实例:
package aa;
import java.util.Arrays;
import java.util.Comparator;
public class Arraysort {
Point[] arr;
Arraysort(){
arr=new Point[4]; //定义对象数组arr,并分配存储的空间
for(int i=0;i<4;i++)
arr[i]=new Point();
}
public static void main(String[] args) {
Arraysort sort=new Arraysort();
sort.arr[0].x=2;sort.arr[0].y=1; //初始化,对象数组中的数据
sort.arr[1].x=2;sort.arr[1].y=2;
sort.arr[2].x=1;sort.arr[2].y=2;
sort.arr[3].x=0;sort.arr[3].y=1;
Arrays.sort(sort.arr, new MyComprator()); //使用指定的排序器,进行排序
for(int i=0;i<4;i++) //输出排序结果
System.out.println("("+sort.arr[i].x+","+sort.arr[i].y+")");
}
}
class Point{
int x;
int y;
}
//比较器,x坐标从小到大排序;x相同时,按照y从小到大排序
class MyComprator implements Comparator {
public int compare(Object arg0, Object arg1) {
Point t1=(Point)arg0;
Point t2=(Point)arg1;
if(t1.x != t2.x)
return t1.x>t2.x? 1:-1;
else
return t1.y>t2.y? 1:-1;
}
}
相关文章
- 《潜行者2:切尔诺贝利之心》借刀杀人成就攻略分享 11-21
- 《潜行者2:切尔诺贝利之心》游戏保存方法介绍 11-21
- 《潜行者2:切尔诺贝利之心》游戏支线任务作用介绍 11-21
- 《潜行者2:切尔诺贝利之心》异常现象特点介绍 11-21
- 《潜行者2:切尔诺贝利之心》随机事件避免原因介绍 11-21
- 《潜行者2:切尔诺贝利之心》随机事件应对方法推荐 11-21