侧边栏壁纸
博主头像
YuJiuYao

You should think more, not talk more

  • 累计撰写 11 篇文章
  • 累计创建 7 个标签
  • 累计收到 2 条评论
标签搜索

数组元素排序的三种方法

YuJiuYao
2022-02-17 / 0 评论 / 0 点赞 / 141 阅读 / 3,055 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-04-16,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1.Arrays类进行数组排序

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

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

package api.array.paixu;

import java.util.Arrays;

import static api.array.paixu.ArrayReverse.arrReverse;
import static api.array.paixu.SetArray.arrayIntSet;

public class PaiXu_1 {
    public static void main(String[] args) {
        int[] arr = arrayIntSet();//arrayIntSet()是从键盘获取数字返回数组
        Arrays.sort(arr);
        System.out.println("该数组元素从小到大排序:" + Arrays.toString(arr));
        /*
        反转数组得到 arrReverse方法详细介绍15 */ 16 System.out.println("该数组元素从大到小排序:" + Arrays.toString(arrReverse(arr))); 17  } 18 }

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

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

package api.array.paixu;

import java.util.Arrays;

import static api.array.paixu.ArrayReverse.arrReverse;
import static api.array.paixu.SetArray.arrayIntSet;

public class PaiXu_2 {

    public static void main(String[] args) {
        int[] arr = arrayIntSet();//arrayIntSet()是从键盘获取数字返回数组
        for (int first = 0; first < arr.length; first++) {
            for (int second = 0; second < arr.length; second++) {
                if (arr[first] < arr[second]) {
                    int temp = arr[first];
                    arr[first] = arr[second];
                    arr[second] = temp;
                }
            }
        }
        System.out.println("该数组元素从小到大排序:" + Arrays.toString(arr));
        /*
        反转数组得到 arrReverse方法详细介绍
*/ 25 System.out.println("该数组元素从大到小排序:" + Arrays.toString(arrReverse(arr))); 26  } 27 }

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

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

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

package api.array.paixu;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

import static api.array.paixu.SetArray.arrayIntSet;

public class PaiXu_3 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        ArrayList<Integer> list2 = new ArrayList<>();
        int[] array = arrayIntSet();
        for (int j : array) {
            list.add(j);
        }
        //从大到小排列方法:
        do {
            int max = list.get(0);
            for (Integer integer : list) {
                if (integer >= max) {
                    max = integer;
                }
            }
            list2.add(max);
            list.remove((Integer) max);  //获取ArrayList对应元素索引值:ArrayList.indexOf(元素名);
        } while (!list.isEmpty());
        System.out.println("从大到小:");
        System.out.println(list2);
        //恢复list到初始状态
        for (int j : array) {
            list.add(j);
        }
        list2.clear();
        //从小到大排列方法:
        do {
            int min = list.get(0);
            for (Integer integer : list) {
                if (integer <= min) {
                    min = integer;
                }
            }
            list2.add(min);
            list.remove((Integer) min);  //获取ArrayList对应元素索引值:ArrayList.indexOf(元素名);
        } while (!list.isEmpty());
        System.out.println("从小到大:");
        System.out.println(list2);
    }
}

执行输出:

2334350-20210414004955397-1338854248

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

1.定义Int数组 arrayIntSet()

package api.array.paixu;

import java.util.Arrays;
import java.util.Scanner;

public class SetArray {
    public static int[] arrayIntSet() {             //将从键盘输入的数字放进一个数组
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入数组元素的个数:");
        int sum = sc.nextInt();
        int[] arr = new int[sum];
        for (int i = 0; i < sum; i++) {
            System.out.print("请输入第" + (i + 1) + "个元素:");
            arr[i] = sc.nextInt();
        }
        System.out.println("输入的数组为:" + Arrays.toString(arr));
        return arr;
    }
}

2.数组元素反转:

package api.array.paixu;

public class ArrayReverse {
    public static int[] arrReverse(int[] array) {
        for (int first = 0, last = array.length - 1; first < last; first++, last--) {
            int temp;
            temp = array[first];
            array[first] = array[last];
            array[last] = temp;
        }
        return array;
    }
}
0

评论区