Java | 数组排序

153 阅读2分钟

一、使用Arrays类排序

Java的Arrays类提供了一个静态方法sort(),可以用来对数组进行排序。这个方法使用了双轴快速排序算法。

demo:

import java.util.Arrays;
public class ArraySortWithArraysClass {
    public static void main(String[] args) {
        int[] numbers = {5, 3, 1, 4, 2};
        // 使用Arrays类的sort方法进行排序
        Arrays.sort(numbers);
        // 打印排序后的数组
        System.out.println(Arrays.toString(numbers));  // 输出:[1, 2, 3, 4, 5]
    }
}

二、自定义排序逻辑

如果需要按照特定的顺序对数组进行排序,可以使用Arrays.sort()方法的另一个版本,它接受一个比较器。

demo:

import java.util.Arrays;
import java.util.Comparator;
public class CustomSortWithArraysClass {
    public static void main(String[] args) {
        String[] words = {"banana", "apple", "orange"};
        // 使用自定义比较器进行排序
        Arrays.sort(words, Comparator.comparingInt(String::length));
        // 打印排序后的数组
        System.out.println(Arrays.toString(words));  // 输出:[apple, orange, banana]
    }
}

三、冒泡排序

冒泡排序是一种简单的排序算法,它重复地遍历数组,比较相邻元素,并在必要时交换它们的位置。

demo:

public class BubbleSort {
    public static void main(String[] args) {
        int[] numbers = {5, 3, 1, 4, 2};
        // 冒泡排序
        for (int i = 0; i < numbers.length - 1; i++) {
            for (int j = 0; j < numbers.length - 1 - i; j++) {
                if (numbers[j] > numbers[j + 1]) {
                    // 交换元素
                    int temp = numbers[j];
                    numbers[j] = numbers[j + 1];
                    numbers[j + 1] = temp;
                }
            }
        }
        // 打印排序后的数组
        System.out.println(Arrays.toString(numbers));  // 输出:[1, 2, 3, 4, 5]
    }
}

四、选择排序

选择排序是一种简单直观的排序算法,它的工作原理是不断地选择剩余元素中的最小(或最大)元素,放到已排序的序列的末尾。

demo:

public class SelectionSort {
    public static void main(String[] args) {
        int[] numbers = {5, 3, 1, 4, 2};
        // 选择排序
        for (int i = 0; i < numbers.length - 1; i++) {
            int minIndex = i;
            for (int j = i + 1; j < numbers.length; j++) {
                if (numbers[j] < numbers[minIndex]) {
                    minIndex = j;
                }
            }
            // 交换元素
            int temp = numbers[i];
            numbers[i] = numbers[minIndex];
            numbers[minIndex] = temp;
        }
        // 打印排序后的数组
        System.out.println(Arrays.toString(numbers));  // 输出:[1, 2, 3, 4, 5]
    }
}

五、插入排序

插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

demo:

public class InsertionSort {
    public static void main(String[] args) {
        int[] numbers = {5, 3, 1, 4, 2};
        // 插入排序
        for (int i = 1; i < numbers.length; i++) {
            int current = numbers[i];
            int j = i - 1;
            while (j >= 0 && numbers[j] > current) {
                numbers[j + 1] = numbers[j];
                j--;
            }
            numbers[j + 1] = current;
        }
        // 打印排序后的数组
        System.out.println(Arrays.toString(numbers));  // 输出:[1, 2, 3, 4, 5]
    }
}

以上就是本次分享的所有内容,感兴趣的朋友点个关注呀,感谢大家啦~