如何从奇数和偶数整数数组中仅对奇数整数排序并仅显示排序的奇数整数?

时间:2019-07-14 10:59:38

标签: java arrays

这是给我的整数数组111,77,88,44,32,11,13,25,44我只需要对数组的奇数元素进行排序和显示。

我曾尝试使用循环和if条件来解决它

我原本预期的输出为11 13 25 77 111

import java.lang.reflect.Array;

public class oddsortSolution {

    public static void main(String args[]) {
        int n[] = { 111, 77, 88, 44, 32, 11, 13, 25, 44 };
        int i = 0;
        int temp = 0;
        while (i < n.length) {
            if (n[i] % 2 != 0) {
                for (int j = i + 1; j < n.length; j++) {
                    if (n[j] > n[i]) {
                        n[j] = temp;
                        n[j] = n[i];
                        n[i] = temp;
                    }
                }
            }
        }

        System.out.println(n[1]);

    }

}

1 个答案:

答案 0 :(得分:2)

您基本上需要跟踪奇数数组的大小,每次找到奇数值时都要递增,确定是否应在现有数组中的某个位置交换该值(范围从0到奇数数组大小)并将其正确插入位置。尝试以下代码,

public class oddsortSolution {
    public static void main(String args[]) {
        int n[] = { 111, 77, 88, 44, 32, 11, 13, 25, 44 };
        int oddArraySize = 0;        
        for (int i = 0;i < n.length; i++) {
            if (n[i] % 2 != 0) {
                oddArraySize++;
                for (int j = 0; j < oddArraySize; j++) {
                    if (j == oddArraySize - 1) {
                        n[j] = n[i];
                    } else if (n[j] > n[i]) {
                        int temp = n[j];
                        n[j] = n[i];
                        n[i] = temp;
                    }
                }
            }
        }
        int[] oddArray = Arrays.copyOfRange(n, 0, oddArraySize);
        System.out.println( Arrays.toString( oddArray ));
    }
}