数组元素排序的三种方法(附完整代码)

1.Arrays类进行数组排序

Java API对Arrays类的说明是:此类包含用来操作数组(比如排序和搜索)的各种方法。

Arrays类中的sort()使用的是“经过调优的快速排序法”;

 1 package api.array.paixu;
 2 
 3 import java.util.Arrays;
 4 
 5 import static api.array.paixu.ArrayReverse.arrReverse;
 6 import static api.array.paixu.SetArray.arrayIntSet;
 7 
 8 public class PaiXu_1 {
 9     public static void main(String[] args) {
10         int[] arr = arrayIntSet();//arrayIntSet()是从键盘获取数字返回数组
11         Arrays.sort(arr);
12         System.out.println("该数组元素从小到大排序:" + Arrays.toString(arr));
13         /*
14         反转数组得到 arrReverse方法详细介绍
15 */ 16 System.out.println("该数组元素从大到小排序:" + Arrays.toString(arrReverse(arr))); 17  } 18 }

2.相邻数组元素比较大小,调换位置进行数组排序

嵌套循环结果,对相邻数组元素比较,满足Array[i]<Array[i+1]的,进行位置调换。

 1 package api.array.paixu;
 2 
 3 import java.util.Arrays;
 4 
 5 import static api.array.paixu.ArrayReverse.arrReverse;
 6 import static api.array.paixu.SetArray.arrayIntSet;
 7 
 8 public class PaiXu_2 {
 9 
10     public static void main(String[] args) {
11         int[] arr = arrayIntSet();//arrayIntSet()是从键盘获取数字返回数组
12         for (int first = 0; first < arr.length; first++) {
13             for (int second = 0; second < arr.length; second++) {
14                 if (arr[first] < arr[second]) {
15                     int temp = arr[first];
16                     arr[first] = arr[second];
17                     arr[second] = temp;
18                 }
19             }
20         }
21         System.out.println("该数组元素从小到大排序:" + Arrays.toString(arr));
22         /*
23         反转数组得到 arrReverse方法详细介绍
24 */ 25 System.out.println("该数组元素从大到小排序:" + Arrays.toString(arrReverse(arr))); 26  } 27 }

3.利用ArrayList改变集合长度进行数组排序(详情

Java API对ArrayList类的说明是:ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。

利用ArrayList中addRemove方法,获取并添加数组元素,然后找出数组元素最大值依次添加至新的集合,实现数组排序。

 1 package api.array.paixu;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Arrays;
 5 import java.util.Scanner;
 6 
 7 import static api.array.paixu.SetArray.arrayIntSet;
 8 
 9 public class PaiXu_3 {
10     public static void main(String[] args) {
11         ArrayList<Integer> list = new ArrayList<>();
12         ArrayList<Integer> list2 = new ArrayList<>();
13         int[] array = arrayIntSet();
14         for (int j : array) {
15             list.add(j);
16         }
17         //从大到小排列方法:
18         do {
19             int max = list.get(0);
20             for (Integer integer : list) {
21                 if (integer >= max) {
22                     max = integer;
23                 }
24             }
25             list2.add(max);
26             list.remove((Integer) max);  //获取ArrayList对应元素索引值:ArrayList.indexOf(元素名);
27         } while (!list.isEmpty());
28         System.out.println("从大到小:");
29         System.out.println(list2);
30         //恢复list到初始状态
31         for (int j : array) {
32             list.add(j);
33         }
34         list2.clear();
35         //从小到大排列方法:
36         do {
37             int min = list.get(0);
38             for (Integer integer : list) {
39                 if (integer <= min) {
40                     min = integer;
41                 }
42             }
43             list2.add(min);
44             list.remove((Integer) min);  //获取ArrayList对应元素索引值:ArrayList.indexOf(元素名);
45         } while (!list.isEmpty());
46         System.out.println("从小到大:");
47         System.out.println(list2);
48     }
49 }

执行输出:

代码中需要用到的两个方法:

1.定义Int数组 arrayIntSet()

 1 package api.array.paixu;
 2 
 3 import java.util.Arrays;
 4 import java.util.Scanner;
 5 
 6 public class SetArray {
 7     public static int[] arrayIntSet() {             //将从键盘输入的数字放进一个数组
 8         Scanner sc = new Scanner(System.in);
 9         System.out.println("请输入数组元素的个数:");
10         int sum = sc.nextInt();
11         int[] arr = new int[sum];
12         for (int i = 0; i < sum; i++) {
13             System.out.print("请输入第" + (i + 1) + "个元素:");
14             arr[i] = sc.nextInt();
15         }
16         System.out.println("输入的数组为:" + Arrays.toString(arr));
17         return arr;
18     }
19 }

2.数组元素反转:(点击查看详细介绍)

 1 package api.array.paixu;
 2 
 3 public class ArrayReverse {
 4     public static int[] arrReverse(int[] array) {
 5         for (int first = 0, last = array.length - 1; first < last; first++, last--) {
 6             int temp;
 7             temp = array[first];
 8             array[first] = array[last];
 9             array[last] = temp;
10         }
11         return array;
12     }
13 }

 

posted @ 2021-04-14 00:51  YuJiuYao  阅读(2364)  评论(0编辑  收藏  举报