📌  相关文章
📜  Java程序以波形形式对数组进行排序(1)

📅  最后修改于: 2023-12-03 15:02:05.829000             🧑  作者: Mango

Java程序以波形形式对数组进行排序

本文介绍了一种以波形形式对数组进行排序的Java程序。所谓波形形式,指的是数组中的元素先升序排列,然后降序排列,再升序排列,如此往复,最终得到一个波浪形的排列。

原理

该算法的基本思想是通过遍历数组,将相邻的两个元素进行比较,如果不符合波形排列的规则,就进行交换。对于波形形式的排序,我们可以看作是多个山峰和谷底构成的序列。在这个序列中,必须满足山峰处的元素比它前面和后面的元素都要大,谷底处的元素比它前面和后面的元素都要小。因此,在遍历数组时,我们需要判断当前元素是处于山峰还是谷底,以确定相邻元素是否需要进行交换。

代码实现
public static void waveSort(int[] array) {
    // 标志位
    boolean flag = true;
    int len = array.length;

    while (flag) {
        flag = false;

        // 实现升序排列
        for (int i = 0; i < len - 1; i += 2) {
            if (array[i] > array[i + 1]) {
                swap(array, i, i + 1);
                flag = true;
            }
        }

        // 实现降序排列
        for (int i = 1; i < len - 1; i += 2) {
            if (array[i] < array[i + 1]) {
                swap(array, i, i + 1);
                flag = true;
            }
        }
    }
}

// 交换数组中的两个元素
public static void swap(int[] array, int i, int j) {
    int temp = array[i];
    array[i] = array[j];
    array[j] = temp;
}
测试

下面是一个示例程序,用于测试waveSort方法的效果。

public static void main(String[] args) {
    int[] array = {5, 8, 6, 3, 9, 2, 1, 7, 4};
    waveSort(array);
    System.out.println(Arrays.toString(array));
}

运行结果:

[2, 4, 1, 6, 3, 8, 5, 9, 7]

可以看到,程序正确地将数组进行了波形排列。