数组元素排序的三种⽅法(附完整代码)
1.Arrays类进⾏数组排序
Java API对Arrays类的说明是:此类包含⽤来操作数组(⽐如排序和搜索)的各种⽅法。
Arrays类中的sort()使⽤的是“经过调优的快速排序法”;
1package api.array.paixu;
2
3import java.util.Arrays;
4
5import static api.array.paixu.ArrayReverse.arrReverse;
6import static api.array.paixu.SetArray.arrayIntSet;
7
8public class PaiXu_1 {
9public static void main(String[] args) {
10int[] arr = arrayIntSet();//arrayIntSet()是从键盘获取数字返回数组
11        Arrays.sort(arr);
12        System.out.println("该数组元素从⼩到⼤排序:" + String(arr));
13/*
14反转数组得到
15*/16 System.out.println("该数组元素从⼤到⼩排序:" + String(arrReverse(arr))); 17  } 18 }
2.相邻数组元素⽐较⼤⼩,调换位置进⾏数组排序
嵌套循环结果,对相邻数组元素⽐较,满⾜Array[i]<Array[i+1]的,进⾏位置调换。
1package api.array.paixu;
2
3import java.util.Arrays;
4
5import static api.array.paixu.ArrayReverse.arrReverse;
6import static api.array.paixu.SetArray.arrayIntSet;
7
8public class PaiXu_2 {
9
10public static void main(String[] args) {
11int[] arr = arrayIntSet();//arrayIntSet()是从键盘获取数字返回数组
12for (int first = 0; first < arr.length; first++) {
13for (int second = 0; second < arr.length; second++) {
14if (arr[first] < arr[second]) {
15int temp = arr[first];
16                    arr[first] = arr[second];
17                    arr[second] = temp;
18                }
19            }
20        }
21        System.out.println("该数组元素从⼩到⼤排序:" + String(arr));
22/*
23反转数组得到
24*/25 System.out.println("该数组元素从⼤到⼩排序:" + String(arrReverse(arr))); 26  } 27 }
3.利⽤ArrayList改变集合长度进⾏数组排序()
Java API对ArrayList类的说明是:ArrayList 类是⼀个可以动态修改的数组,与普通数组的区别就是它是没有固定⼤⼩的限制,我们可以添加或删除元素。
利⽤ArrayList中add和Remove⽅法,获取并添加数组元素,然后出数组元素最⼤值依次添加⾄新的集合,实现数组排序。
1package api.array.paixu;
2
3import java.util.ArrayList;
4import java.util.Arrays;
5import java.util.Scanner;
6
7import static api.array.paixu.SetArray.arrayIntSet;
8
nextint()方法9public class PaiXu_3 {
10public static void main(String[] args) {
11        ArrayList<Integer> list = new ArrayList<>();
12        ArrayList<Integer> list2 = new ArrayList<>();
13int[] array = arrayIntSet();
14for (int j : array) {
15            list.add(j);
16        }
17//从⼤到⼩排列⽅法:
18do {
19int max = (0);
20for (Integer integer : list) {
21if (integer >= max) {
22                    max = integer;
23                }
24            }
25            list2.add(max);
26            ve((Integer) max);  //获取ArrayList对应元素索引值:ArrayList.indexOf(元素名);
27        } while (!list.isEmpty());
28        System.out.println("从⼤到⼩:");
29        System.out.println(list2);
30//恢复list到初始状态
31for (int j : array) {
32            list.add(j);
33        }
34        list2.clear();
35//从⼩到⼤排列⽅法:
36do {
37int min = (0);
38for (Integer integer : list) {
39if (integer <= min) {
40                    min = integer;
41                }
42            }
43            list2.add(min);
44            ve((Integer) min);  //获取ArrayList对应元素索引值:ArrayList.indexOf(元素名);
45        } while (!list.isEmpty());
46        System.out.println("从⼩到⼤:");
47        System.out.println(list2);
48    }
49 }
执⾏输出:
代码中需要⽤到的两个⽅法:
1.定义Int数组 arrayIntSet()
1package api.array.paixu;
2
3import java.util.Arrays;
4import java.util.Scanner;
5
6public class SetArray {
7public static int[] arrayIntSet() {            //将从键盘输⼊的数字放进⼀个数组
8        Scanner sc = new Scanner(System.in);
9        System.out.println("请输⼊数组元素的个数:");
10int sum = sc.nextInt();
11int[] arr = new int[sum];
12for (int i = 0; i < sum; i++) {
13            System.out.print("请输⼊第" + (i + 1) + "个元素:");
14            arr[i] = sc.nextInt();
15        }
16        System.out.println("输⼊的数组为:" + String(arr));
17return arr;
18    }
19 }
2.数组元素反转:
1package api.array.paixu;
2
3public class ArrayReverse {
4public static int[] arrReverse(int[] array) {
5for (int first = 0, last = array.length - 1; first < last; first++, last--) {
6int temp;
7            temp = array[first];
8            array[first] = array[last];
9            array[last] = temp;
10        }
11return array;
12    }
13 }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。