java - 按顺序排列偶数和奇数

标签 java algorithm data-structures

我试图在一次传递中将偶数和奇数分别分离到左侧和右侧。此外,我想确保这些数字按 asc 顺序排序,这样整个逻辑的复杂度将达到 O(n)。

例如,如果我的输入是{9,8,2,3,11,10,1};

这个逻辑我将 o/p 实现为 {10 8 2 3 11 9 1 } 但我想确保我的输出在同一次传递中被排序为 { 2,8,10,1,3,9,11}。

static void segregateEvenOdd(int arr[]) {
    /* Initialize left and right indexes */
    int left = 0, right = arr.length - 1;
    while (left < right) {
        /* Increment left index while we see 0 at left */
        while (arr[left] % 2 == 0 && left < right)
            left++;

        /* Decrement right index while we see 1 at right */
        while (arr[right] % 2 == 1 && left < right)
            right--;

        if (left < right) {
            /* Swap arr[left] and arr[right] */
            int temp = arr[left];
            arr[left] = arr[right];
            arr[right] = temp;
            left++;
            right--;
        }
    }
}

最佳答案

使用 Sort overload可以让你传递一个Comparator。比较函数应该如下所示(伪代码):

Comparison(a, b)
{
    if (Even(a) && !Even(b))
        return -1; // a < b
    if (Even(b) && !Even(a))
        return 1; // a > b
    // both are even, or both are odd.
    if (a < b) return -1;
    if (a > b) return 1;
    return 0;
}

关于java - 按顺序排列偶数和奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34892939/

相关文章:

java - 什么是NullPointerException,我该如何解决?

arrays - 算法 - 找到中心索引

algorithm - 适用什么样的算法?

algorithm - 查找有向图上是否存在从 v 到 t 的非简单路径

java - Apache Spark - JavaSparkContext 无法转换为 SparkContext 错误

java - 将图像与实体一起保存在数据库中

mysql - 我的大型 mysql 表注定要失败吗?

c - 修复 C 中的堆属性数据结构

algorithm - Dijkstra:在有向图中找到最短路径

java - 如果使用 LinkedList add 方法修改底层列表,iterator.next 是否也会被修改?