数组元素排序的三种⽅法(附完整代码)
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小时内删除。
发表评论